// export waves , timer , freesides , playersides , queue , TeamA , TeamB , leftside , rightside , apequeue ; starting var i ; begin playersides = [ 1 , 2 ] ;
   0: LD_ADDR_EXP 4
   4: PUSH
   5: LD_INT 1
   7: PUSH
   8: LD_INT 2
  10: PUSH
  11: EMPTY
  12: LIST
  13: LIST
  14: ST_TO_ADDR
// freesides = [ 7 , 8 ] ;
  15: LD_ADDR_EXP 3
  19: PUSH
  20: LD_INT 7
  22: PUSH
  23: LD_INT 8
  25: PUSH
  26: EMPTY
  27: LIST
  28: LIST
  29: ST_TO_ADDR
// TeamA = [ playersides [ 0 ] ] ;
  30: LD_ADDR_EXP 6
  34: PUSH
  35: LD_EXP 4
  39: PUSH
  40: LD_INT 0
  42: ARRAY
  43: PUSH
  44: EMPTY
  45: LIST
  46: ST_TO_ADDR
// TeamB = [ playersides [ 1 ] ] ;
  47: LD_ADDR_EXP 7
  51: PUSH
  52: LD_EXP 4
  56: PUSH
  57: LD_INT 1
  59: ARRAY
  60: PUSH
  61: EMPTY
  62: LIST
  63: ST_TO_ADDR
// timer = 0 ;
  64: LD_ADDR_EXP 2
  68: PUSH
  69: LD_INT 0
  71: ST_TO_ADDR
// waves = 0 ;
  72: LD_ADDR_EXP 1
  76: PUSH
  77: LD_INT 0
  79: ST_TO_ADDR
// queue = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  80: LD_ADDR_EXP 5
  84: PUSH
  85: LD_INT 0
  87: PUSH
  88: LD_INT 0
  90: PUSH
  91: LD_INT 0
  93: PUSH
  94: LD_INT 0
  96: PUSH
  97: LD_INT 0
  99: PUSH
 100: LD_INT 0
 102: PUSH
 103: LD_INT 0
 105: PUSH
 106: LD_INT 0
 108: PUSH
 109: EMPTY
 110: LIST
 111: LIST
 112: LIST
 113: LIST
 114: LIST
 115: LIST
 116: LIST
 117: LIST
 118: ST_TO_ADDR
// apequeue = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 119: LD_ADDR_EXP 10
 123: PUSH
 124: LD_INT 0
 126: PUSH
 127: LD_INT 0
 129: PUSH
 130: LD_INT 0
 132: PUSH
 133: LD_INT 0
 135: PUSH
 136: LD_INT 0
 138: PUSH
 139: LD_INT 0
 141: PUSH
 142: LD_INT 0
 144: PUSH
 145: LD_INT 0
 147: PUSH
 148: EMPTY
 149: LIST
 150: LIST
 151: LIST
 152: LIST
 153: LIST
 154: LIST
 155: LIST
 156: LIST
 157: ST_TO_ADDR
// game_speed = 7 ;
 158: LD_ADDR_OWVAR 65
 162: PUSH
 163: LD_INT 7
 165: ST_TO_ADDR
// RandomizeAll ( ) ;
 166: CALL_OW 11
// if Multiplayer then
 170: LD_OWVAR 4
 174: IFFALSE 386
// begin TeamA = [ ] ;
 176: LD_ADDR_EXP 6
 180: PUSH
 181: EMPTY
 182: ST_TO_ADDR
// TeamB = [ ] ;
 183: LD_ADDR_EXP 7
 187: PUSH
 188: EMPTY
 189: ST_TO_ADDR
// playersides = [ ] ;
 190: LD_ADDR_EXP 4
 194: PUSH
 195: EMPTY
 196: ST_TO_ADDR
// freesides = [ ] ;
 197: LD_ADDR_EXP 3
 201: PUSH
 202: EMPTY
 203: ST_TO_ADDR
// for i = 1 to 8 do
 204: LD_ADDR_VAR 0 1
 208: PUSH
 209: DOUBLE
 210: LD_INT 1
 212: DEC
 213: ST_TO_ADDR
 214: LD_INT 8
 216: PUSH
 217: FOR_TO
 218: IFFALSE 272
// if mp_sides_positions [ i ] <> 0 then
 220: LD_OWVAR 17
 224: PUSH
 225: LD_VAR 0 1
 229: ARRAY
 230: PUSH
 231: LD_INT 0
 233: NONEQUAL
 234: IFFALSE 254
// playersides = playersides ^ i else
 236: LD_ADDR_EXP 4
 240: PUSH
 241: LD_EXP 4
 245: PUSH
 246: LD_VAR 0 1
 250: ADD
 251: ST_TO_ADDR
 252: GO 270
// freesides = freesides ^ i ;
 254: LD_ADDR_EXP 3
 258: PUSH
 259: LD_EXP 3
 263: PUSH
 264: LD_VAR 0 1
 268: ADD
 269: ST_TO_ADDR
 270: GO 217
 272: POP
 273: POP
// for i = 1 to playersides do
 274: LD_ADDR_VAR 0 1
 278: PUSH
 279: DOUBLE
 280: LD_INT 1
 282: DEC
 283: ST_TO_ADDR
 284: LD_EXP 4
 288: PUSH
 289: FOR_TO
 290: IFFALSE 384
// begin if mp_sides_teams [ playersides [ i ] ] = 1 then
 292: LD_OWVAR 15
 296: PUSH
 297: LD_EXP 4
 301: PUSH
 302: LD_VAR 0 1
 306: ARRAY
 307: ARRAY
 308: PUSH
 309: LD_INT 1
 311: EQUAL
 312: IFFALSE 338
// TeamA = TeamA ^ playersides [ i ] else
 314: LD_ADDR_EXP 6
 318: PUSH
 319: LD_EXP 6
 323: PUSH
 324: LD_EXP 4
 328: PUSH
 329: LD_VAR 0 1
 333: ARRAY
 334: ADD
 335: ST_TO_ADDR
 336: GO 382
// if mp_sides_teams [ playersides [ i ] ] = 2 then
 338: LD_OWVAR 15
 342: PUSH
 343: LD_EXP 4
 347: PUSH
 348: LD_VAR 0 1
 352: ARRAY
 353: ARRAY
 354: PUSH
 355: LD_INT 2
 357: EQUAL
 358: IFFALSE 382
// TeamB = TeamB ^ playersides [ i ] ;
 360: LD_ADDR_EXP 7
 364: PUSH
 365: LD_EXP 7
 369: PUSH
 370: LD_EXP 4
 374: PUSH
 375: LD_VAR 0 1
 379: ARRAY
 380: ADD
 381: ST_TO_ADDR
// end ;
 382: GO 289
 384: POP
 385: POP
// end ; start ;
 386: CALL 1060 0 0
// if Multiplayer then
 390: LD_OWVAR 4
 394: IFFALSE 410
// begin Your_Side := mp_player_side ;
 396: LD_ADDR_OWVAR 2
 400: PUSH
 401: LD_OWVAR 7
 405: ST_TO_ADDR
// set_shared_visions_and_alliances ;
 406: CALL 411 0 0
// end ; end ;
 410: END
// export function set_shared_visions_and_alliances ; var i , j , Side_Teams , Team_Game , shared_vision , Teams ; begin
 411: LD_INT 0
 413: PPUSH
 414: PPUSH
 415: PPUSH
 416: PPUSH
 417: PPUSH
 418: PPUSH
 419: PPUSH
// Side_Teams := mp_sides_teams ;
 420: LD_ADDR_VAR 0 4
 424: PUSH
 425: LD_OWVAR 15
 429: ST_TO_ADDR
// Team_Game := ( Side_Teams diff [ 0 ] ) > 1 ;
 430: LD_ADDR_VAR 0 5
 434: PUSH
 435: LD_VAR 0 4
 439: PUSH
 440: LD_INT 0
 442: PUSH
 443: EMPTY
 444: LIST
 445: DIFF
 446: PUSH
 447: LD_INT 1
 449: GREATER
 450: ST_TO_ADDR
// shared_vision := GetMultiplayerSetting ( 10 ) ;
 451: LD_ADDR_VAR 0 6
 455: PUSH
 456: LD_INT 10
 458: PPUSH
 459: CALL_OW 426
 463: ST_TO_ADDR
// Teams := mp_teams ;
 464: LD_ADDR_VAR 0 7
 468: PUSH
 469: LD_OWVAR 12
 473: ST_TO_ADDR
// if not Team_Game then
 474: LD_VAR 0 5
 478: NOT
 479: IFFALSE 577
// begin for i = 1 to 8 do
 481: LD_ADDR_VAR 0 2
 485: PUSH
 486: DOUBLE
 487: LD_INT 1
 489: DEC
 490: ST_TO_ADDR
 491: LD_INT 8
 493: PUSH
 494: FOR_TO
 495: IFFALSE 573
// for j = 1 to 8 do
 497: LD_ADDR_VAR 0 3
 501: PUSH
 502: DOUBLE
 503: LD_INT 1
 505: DEC
 506: ST_TO_ADDR
 507: LD_INT 8
 509: PUSH
 510: FOR_TO
 511: IFFALSE 569
// if i <> j then
 513: LD_VAR 0 2
 517: PUSH
 518: LD_VAR 0 3
 522: NONEQUAL
 523: IFFALSE 547
// SetAttitude ( i , j , att_neutral , true ) else
 525: LD_VAR 0 2
 529: PPUSH
 530: LD_VAR 0 3
 534: PPUSH
 535: LD_INT 0
 537: PPUSH
 538: LD_INT 1
 540: PPUSH
 541: CALL_OW 80
 545: GO 567
// SetAttitude ( i , j , att_friend , true ) ;
 547: LD_VAR 0 2
 551: PPUSH
 552: LD_VAR 0 3
 556: PPUSH
 557: LD_INT 1
 559: PPUSH
 560: LD_INT 1
 562: PPUSH
 563: CALL_OW 80
 567: GO 510
 569: POP
 570: POP
 571: GO 494
 573: POP
 574: POP
// end else
 575: GO 1055
// begin if shared_vision then
 577: LD_VAR 0 6
 581: IFFALSE 805
// begin if mp_game_type = 1 then
 583: LD_OWVAR 6
 587: PUSH
 588: LD_INT 1
 590: EQUAL
 591: IFFALSE 715
// begin for i = 1 to TeamA do
 593: LD_ADDR_VAR 0 2
 597: PUSH
 598: DOUBLE
 599: LD_INT 1
 601: DEC
 602: ST_TO_ADDR
 603: LD_EXP 6
 607: PUSH
 608: FOR_TO
 609: IFFALSE 631
// ChangeSideFog ( TeamA [ i ] , 1 ) ;
 611: LD_EXP 6
 615: PUSH
 616: LD_VAR 0 2
 620: ARRAY
 621: PPUSH
 622: LD_INT 1
 624: PPUSH
 625: CALL_OW 343
 629: GO 608
 631: POP
 632: POP
// for i = 1 to TeamB do
 633: LD_ADDR_VAR 0 2
 637: PUSH
 638: DOUBLE
 639: LD_INT 1
 641: DEC
 642: ST_TO_ADDR
 643: LD_EXP 7
 647: PUSH
 648: FOR_TO
 649: IFFALSE 671
// ChangeSideFog ( TeamB [ i ] , 2 ) ;
 651: LD_EXP 7
 655: PUSH
 656: LD_VAR 0 2
 660: ARRAY
 661: PPUSH
 662: LD_INT 2
 664: PPUSH
 665: CALL_OW 343
 669: GO 648
 671: POP
 672: POP
// for i = 1 to freesides do
 673: LD_ADDR_VAR 0 2
 677: PUSH
 678: DOUBLE
 679: LD_INT 1
 681: DEC
 682: ST_TO_ADDR
 683: LD_EXP 3
 687: PUSH
 688: FOR_TO
 689: IFFALSE 711
// ChangeSideFog ( freesides [ i ] , 3 ) ;
 691: LD_EXP 3
 695: PUSH
 696: LD_VAR 0 2
 700: ARRAY
 701: PPUSH
 702: LD_INT 3
 704: PPUSH
 705: CALL_OW 343
 709: GO 688
 711: POP
 712: POP
// end else
 713: GO 805
// if mp_game_type = 2 then
 715: LD_OWVAR 6
 719: PUSH
 720: LD_INT 2
 722: EQUAL
 723: IFFALSE 805
// begin for i = 1 to playersides do
 725: LD_ADDR_VAR 0 2
 729: PUSH
 730: DOUBLE
 731: LD_INT 1
 733: DEC
 734: ST_TO_ADDR
 735: LD_EXP 4
 739: PUSH
 740: FOR_TO
 741: IFFALSE 763
// ChangeSideFog ( playersides [ i ] , 1 ) ;
 743: LD_EXP 4
 747: PUSH
 748: LD_VAR 0 2
 752: ARRAY
 753: PPUSH
 754: LD_INT 1
 756: PPUSH
 757: CALL_OW 343
 761: GO 740
 763: POP
 764: POP
// for i = 1 to freesides do
 765: LD_ADDR_VAR 0 2
 769: PUSH
 770: DOUBLE
 771: LD_INT 1
 773: DEC
 774: ST_TO_ADDR
 775: LD_EXP 3
 779: PUSH
 780: FOR_TO
 781: IFFALSE 803
// ChangeSideFog ( freesides [ i ] , 2 ) ;
 783: LD_EXP 3
 787: PUSH
 788: LD_VAR 0 2
 792: ARRAY
 793: PPUSH
 794: LD_INT 2
 796: PPUSH
 797: CALL_OW 343
 801: GO 780
 803: POP
 804: POP
// end ; end ; if mp_game_type = 1 then
 805: LD_OWVAR 6
 809: PUSH
 810: LD_INT 1
 812: EQUAL
 813: IFFALSE 969
// begin for i = 1 to TeamA do
 815: LD_ADDR_VAR 0 2
 819: PUSH
 820: DOUBLE
 821: LD_INT 1
 823: DEC
 824: ST_TO_ADDR
 825: LD_EXP 6
 829: PUSH
 830: FOR_TO
 831: IFFALSE 889
// for j = 1 to TeamA do
 833: LD_ADDR_VAR 0 3
 837: PUSH
 838: DOUBLE
 839: LD_INT 1
 841: DEC
 842: ST_TO_ADDR
 843: LD_EXP 6
 847: PUSH
 848: FOR_TO
 849: IFFALSE 885
// SetAttitude ( TeamA [ i ] , TeamA [ j ] , att_friend , true ) ;
 851: LD_EXP 6
 855: PUSH
 856: LD_VAR 0 2
 860: ARRAY
 861: PPUSH
 862: LD_EXP 6
 866: PUSH
 867: LD_VAR 0 3
 871: ARRAY
 872: PPUSH
 873: LD_INT 1
 875: PPUSH
 876: LD_INT 1
 878: PPUSH
 879: CALL_OW 80
 883: GO 848
 885: POP
 886: POP
 887: GO 830
 889: POP
 890: POP
// for i = 1 to TeamB do
 891: LD_ADDR_VAR 0 2
 895: PUSH
 896: DOUBLE
 897: LD_INT 1
 899: DEC
 900: ST_TO_ADDR
 901: LD_EXP 7
 905: PUSH
 906: FOR_TO
 907: IFFALSE 965
// for j = 1 to TeamB do
 909: LD_ADDR_VAR 0 3
 913: PUSH
 914: DOUBLE
 915: LD_INT 1
 917: DEC
 918: ST_TO_ADDR
 919: LD_EXP 7
 923: PUSH
 924: FOR_TO
 925: IFFALSE 961
// SetAttitude ( TeamB [ i ] , TeamB [ j ] , att_friend , true ) ;
 927: LD_EXP 7
 931: PUSH
 932: LD_VAR 0 2
 936: ARRAY
 937: PPUSH
 938: LD_EXP 7
 942: PUSH
 943: LD_VAR 0 3
 947: ARRAY
 948: PPUSH
 949: LD_INT 1
 951: PPUSH
 952: LD_INT 1
 954: PPUSH
 955: CALL_OW 80
 959: GO 924
 961: POP
 962: POP
 963: GO 906
 965: POP
 966: POP
// end else
 967: GO 1055
// if mp_game_type = 2 then
 969: LD_OWVAR 6
 973: PUSH
 974: LD_INT 2
 976: EQUAL
 977: IFFALSE 1055
// for i = 1 to playersides do
 979: LD_ADDR_VAR 0 2
 983: PUSH
 984: DOUBLE
 985: LD_INT 1
 987: DEC
 988: ST_TO_ADDR
 989: LD_EXP 4
 993: PUSH
 994: FOR_TO
 995: IFFALSE 1053
// for j = 1 to playersides do
 997: LD_ADDR_VAR 0 3
1001: PUSH
1002: DOUBLE
1003: LD_INT 1
1005: DEC
1006: ST_TO_ADDR
1007: LD_EXP 4
1011: PUSH
1012: FOR_TO
1013: IFFALSE 1049
// SetAttitude ( playersides [ i ] , playersides [ j ] , att_friend , true ) ;
1015: LD_EXP 4
1019: PUSH
1020: LD_VAR 0 2
1024: ARRAY
1025: PPUSH
1026: LD_EXP 4
1030: PUSH
1031: LD_VAR 0 3
1035: ARRAY
1036: PPUSH
1037: LD_INT 1
1039: PPUSH
1040: LD_INT 1
1042: PPUSH
1043: CALL_OW 80
1047: GO 1012
1049: POP
1050: POP
1051: GO 994
1053: POP
1054: POP
// end ; end ;
1055: LD_VAR 0 1
1059: RET
// export function start ; var i , l , k , id , cls , pos , n ; begin
1060: LD_INT 0
1062: PPUSH
1063: PPUSH
1064: PPUSH
1065: PPUSH
1066: PPUSH
1067: PPUSH
1068: PPUSH
1069: PPUSH
// pos = [ leftmid , lefts , leftright , rightmid , rights , rightleft ] ;
1070: LD_ADDR_VAR 0 7
1074: PUSH
1075: LD_INT 14
1077: PUSH
1078: LD_INT 12
1080: PUSH
1081: LD_INT 8
1083: PUSH
1084: LD_INT 15
1086: PUSH
1087: LD_INT 13
1089: PUSH
1090: LD_INT 9
1092: PUSH
1093: EMPTY
1094: LIST
1095: LIST
1096: LIST
1097: LIST
1098: LIST
1099: LIST
1100: ST_TO_ADDR
// n = 10 ;
1101: LD_ADDR_VAR 0 8
1105: PUSH
1106: LD_INT 10
1108: ST_TO_ADDR
// cls = [ 1 , 2 , 3 , 4 ] ;
1109: LD_ADDR_VAR 0 6
1113: PUSH
1114: LD_INT 1
1116: PUSH
1117: LD_INT 2
1119: PUSH
1120: LD_INT 3
1122: PUSH
1123: LD_INT 4
1125: PUSH
1126: EMPTY
1127: LIST
1128: LIST
1129: LIST
1130: LIST
1131: ST_TO_ADDR
// if Multiplayer then
1132: LD_OWVAR 4
1136: IFFALSE 1201
// begin if GetMultiplayerSetting ( 1 ) = 0 then
1138: LD_INT 1
1140: PPUSH
1141: CALL_OW 426
1145: PUSH
1146: LD_INT 0
1148: EQUAL
1149: IFFALSE 1159
// n = 7 ;
1151: LD_ADDR_VAR 0 8
1155: PUSH
1156: LD_INT 7
1158: ST_TO_ADDR
// if GetMultiplayerSetting ( 1 ) = 1 then
1159: LD_INT 1
1161: PPUSH
1162: CALL_OW 426
1166: PUSH
1167: LD_INT 1
1169: EQUAL
1170: IFFALSE 1180
// n = 10 ;
1172: LD_ADDR_VAR 0 8
1176: PUSH
1177: LD_INT 10
1179: ST_TO_ADDR
// if GetMultiplayerSetting ( 1 ) = 2 then
1180: LD_INT 1
1182: PPUSH
1183: CALL_OW 426
1187: PUSH
1188: LD_INT 2
1190: EQUAL
1191: IFFALSE 1201
// n = 13 ;
1193: LD_ADDR_VAR 0 8
1197: PUSH
1198: LD_INT 13
1200: ST_TO_ADDR
// end ; for l = 1 to playersides do
1201: LD_ADDR_VAR 0 3
1205: PUSH
1206: DOUBLE
1207: LD_INT 1
1209: DEC
1210: ST_TO_ADDR
1211: LD_EXP 4
1215: PUSH
1216: FOR_TO
1217: IFFALSE 1397
// begin for i = 1 to n do
1219: LD_ADDR_VAR 0 2
1223: PUSH
1224: DOUBLE
1225: LD_INT 1
1227: DEC
1228: ST_TO_ADDR
1229: LD_VAR 0 8
1233: PUSH
1234: FOR_TO
1235: IFFALSE 1393
// begin uc_side = playersides [ l ] ;
1237: LD_ADDR_OWVAR 20
1241: PUSH
1242: LD_EXP 4
1246: PUSH
1247: LD_VAR 0 3
1251: ARRAY
1252: ST_TO_ADDR
// uc_nation = mp_sides_nations [ playersides [ l ] ] ;
1253: LD_ADDR_OWVAR 21
1257: PUSH
1258: LD_OWVAR 16
1262: PUSH
1263: LD_EXP 4
1267: PUSH
1268: LD_VAR 0 3
1272: ARRAY
1273: ARRAY
1274: ST_TO_ADDR
// hc_name =  ;
1275: LD_ADDR_OWVAR 26
1279: PUSH
1280: LD_STRING 
1282: ST_TO_ADDR
// hc_class = cls [ i mod 5 ] ;
1283: LD_ADDR_OWVAR 28
1287: PUSH
1288: LD_VAR 0 6
1292: PUSH
1293: LD_VAR 0 2
1297: PUSH
1298: LD_INT 5
1300: MOD
1301: ARRAY
1302: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
1303: LD_ADDR_OWVAR 27
1307: PUSH
1308: LD_INT 1
1310: PPUSH
1311: LD_INT 2
1313: PPUSH
1314: CALL_OW 12
1318: ST_TO_ADDR
// id = createhuman ;
1319: LD_ADDR_VAR 0 5
1323: PUSH
1324: CALL_OW 44
1328: ST_TO_ADDR
// PlaceUnitArea ( id , pos [ mp_sides_positions [ playersides [ l ] ] ] , false ) ;
1329: LD_VAR 0 5
1333: PPUSH
1334: LD_VAR 0 7
1338: PUSH
1339: LD_OWVAR 17
1343: PUSH
1344: LD_EXP 4
1348: PUSH
1349: LD_VAR 0 3
1353: ARRAY
1354: ARRAY
1355: ARRAY
1356: PPUSH
1357: LD_INT 0
1359: PPUSH
1360: CALL_OW 49
// if your_side = playersides [ l ] then
1364: LD_OWVAR 2
1368: PUSH
1369: LD_EXP 4
1373: PUSH
1374: LD_VAR 0 3
1378: ARRAY
1379: EQUAL
1380: IFFALSE 1391
// CenterNowOnUnits ( id ) ;
1382: LD_VAR 0 5
1386: PPUSH
1387: CALL_OW 87
// end ;
1391: GO 1234
1393: POP
1394: POP
// end ;
1395: GO 1216
1397: POP
1398: POP
// PlaceTreesToArea ( Area01 , [ 21 , 22 , 23 ] , 500 , 100 , 1 ) ;
1399: LD_INT 1
1401: PPUSH
1402: LD_INT 21
1404: PUSH
1405: LD_INT 22
1407: PUSH
1408: LD_INT 23
1410: PUSH
1411: EMPTY
1412: LIST
1413: LIST
1414: LIST
1415: PPUSH
1416: LD_INT 500
1418: PPUSH
1419: LD_INT 100
1421: PPUSH
1422: LD_INT 1
1424: PPUSH
1425: CALL_OW 352
// SetAreaMapShow ( Area01Show , 1 ) ;
1429: LD_INT 22
1431: PPUSH
1432: LD_INT 1
1434: PPUSH
1435: CALL_OW 424
// end ;
1439: LD_VAR 0 1
1443: RET
// every 0 0$01 do var i , k , j , l ;
1444: GO 1446
1446: DISABLE
1447: LD_INT 0
1449: PPUSH
1450: PPUSH
1451: PPUSH
1452: PPUSH
// begin i = 95 ;
1453: LD_ADDR_VAR 0 1
1457: PUSH
1458: LD_INT 95
1460: ST_TO_ADDR
// k = 107 ;
1461: LD_ADDR_VAR 0 2
1465: PUSH
1466: LD_INT 107
1468: ST_TO_ADDR
// j = 188 ;
1469: LD_ADDR_VAR 0 3
1473: PUSH
1474: LD_INT 188
1476: ST_TO_ADDR
// l = 201 ;
1477: LD_ADDR_VAR 0 4
1481: PUSH
1482: LD_INT 201
1484: ST_TO_ADDR
// repeat wait ( 0 0$0.1 ) ;
1485: LD_INT 4
1487: PPUSH
1488: CALL_OW 67
// SetAreaMapShow ( Area02 , 2 ) ;
1492: LD_INT 2
1494: PPUSH
1495: LD_INT 2
1497: PPUSH
1498: CALL_OW 424
// SetAreaMapShow ( Area03 , 2 ) ;
1502: LD_INT 3
1504: PPUSH
1505: LD_INT 2
1507: PPUSH
1508: CALL_OW 424
// MoveAreaXY ( Area02 , i - 2 , 4 ) ;
1512: LD_INT 2
1514: PPUSH
1515: LD_VAR 0 1
1519: PUSH
1520: LD_INT 2
1522: MINUS
1523: PPUSH
1524: LD_INT 4
1526: PPUSH
1527: CALL_OW 425
// MoveAreaXY ( Area03 , k , 4 ) ;
1531: LD_INT 3
1533: PPUSH
1534: LD_VAR 0 2
1538: PPUSH
1539: LD_INT 4
1541: PPUSH
1542: CALL_OW 425
// SetAreaMapShow ( Area04 , 3 ) ;
1546: LD_INT 4
1548: PPUSH
1549: LD_INT 3
1551: PPUSH
1552: CALL_OW 424
// SetAreaMapShow ( Area05 , 3 ) ;
1556: LD_INT 5
1558: PPUSH
1559: LD_INT 3
1561: PPUSH
1562: CALL_OW 424
// MoveAreaXY ( Area04 , i + 1 , 10 ) ;
1566: LD_INT 4
1568: PPUSH
1569: LD_VAR 0 1
1573: PUSH
1574: LD_INT 1
1576: PLUS
1577: PPUSH
1578: LD_INT 10
1580: PPUSH
1581: CALL_OW 425
// MoveAreaXY ( Area05 , k + 3 , 10 ) ;
1585: LD_INT 5
1587: PPUSH
1588: LD_VAR 0 2
1592: PUSH
1593: LD_INT 3
1595: PLUS
1596: PPUSH
1597: LD_INT 10
1599: PPUSH
1600: CALL_OW 425
// SetAreaMapShow ( Area06 , 4 ) ;
1604: LD_INT 6
1606: PPUSH
1607: LD_INT 4
1609: PPUSH
1610: CALL_OW 424
// SetAreaMapShow ( Area07 , 4 ) ;
1614: LD_INT 7
1616: PPUSH
1617: LD_INT 4
1619: PPUSH
1620: CALL_OW 424
// MoveAreaXY ( Area06 , j , 192 ) ;
1624: LD_INT 6
1626: PPUSH
1627: LD_VAR 0 3
1631: PPUSH
1632: LD_INT 192
1634: PPUSH
1635: CALL_OW 425
// MoveAreaXY ( Area07 , l , 192 ) ;
1639: LD_INT 7
1641: PPUSH
1642: LD_VAR 0 4
1646: PPUSH
1647: LD_INT 192
1649: PPUSH
1650: CALL_OW 425
// SetAreaMapShow ( Area10 , 5 ) ;
1654: LD_INT 10
1656: PPUSH
1657: LD_INT 5
1659: PPUSH
1660: CALL_OW 424
// SetAreaMapShow ( Area11 , 5 ) ;
1664: LD_INT 11
1666: PPUSH
1667: LD_INT 5
1669: PPUSH
1670: CALL_OW 424
// MoveAreaXY ( Area10 , i + 6 , 18 ) ;
1674: LD_INT 10
1676: PPUSH
1677: LD_VAR 0 1
1681: PUSH
1682: LD_INT 6
1684: PLUS
1685: PPUSH
1686: LD_INT 18
1688: PPUSH
1689: CALL_OW 425
// MoveAreaXY ( Area11 , k + 8 , 18 ) ;
1693: LD_INT 11
1695: PPUSH
1696: LD_VAR 0 2
1700: PUSH
1701: LD_INT 8
1703: PLUS
1704: PPUSH
1705: LD_INT 18
1707: PPUSH
1708: CALL_OW 425
// SetAreaMapShow ( oilleft , 7 ) ;
1712: LD_INT 18
1714: PPUSH
1715: LD_INT 7
1717: PPUSH
1718: CALL_OW 424
// SetAreaMapShow ( oilright , 7 ) ;
1722: LD_INT 19
1724: PPUSH
1725: LD_INT 7
1727: PPUSH
1728: CALL_OW 424
// MoveAreaXY ( oilleft , j - 21 , 150 ) ;
1732: LD_INT 18
1734: PPUSH
1735: LD_VAR 0 3
1739: PUSH
1740: LD_INT 21
1742: MINUS
1743: PPUSH
1744: LD_INT 150
1746: PPUSH
1747: CALL_OW 425
// MoveAreaXY ( oilright , l - 21 , 150 ) ;
1751: LD_INT 19
1753: PPUSH
1754: LD_VAR 0 4
1758: PUSH
1759: LD_INT 21
1761: MINUS
1762: PPUSH
1763: LD_INT 150
1765: PPUSH
1766: CALL_OW 425
// SetAreaMapShow ( sibleft , 6 ) ;
1770: LD_INT 16
1772: PPUSH
1773: LD_INT 6
1775: PPUSH
1776: CALL_OW 424
// SetAreaMapShow ( sibright , 6 ) ;
1780: LD_INT 17
1782: PPUSH
1783: LD_INT 6
1785: PPUSH
1786: CALL_OW 424
// MoveAreaXY ( sibleft , j - 46 , 100 ) ;
1790: LD_INT 16
1792: PPUSH
1793: LD_VAR 0 3
1797: PUSH
1798: LD_INT 46
1800: MINUS
1801: PPUSH
1802: LD_INT 100
1804: PPUSH
1805: CALL_OW 425
// MoveAreaXY ( sibright , l - 46 , 100 ) ;
1809: LD_INT 17
1811: PPUSH
1812: LD_VAR 0 4
1816: PUSH
1817: LD_INT 46
1819: MINUS
1820: PPUSH
1821: LD_INT 100
1823: PPUSH
1824: CALL_OW 425
// SetAreaMapShow ( monkeleft , 8 ) ;
1828: LD_INT 20
1830: PPUSH
1831: LD_INT 8
1833: PPUSH
1834: CALL_OW 424
// SetAreaMapShow ( monkeright , 8 ) ;
1838: LD_INT 21
1840: PPUSH
1841: LD_INT 8
1843: PPUSH
1844: CALL_OW 424
// MoveAreaXY ( monkeleft , j - 4 , 182 ) ;
1848: LD_INT 20
1850: PPUSH
1851: LD_VAR 0 3
1855: PUSH
1856: LD_INT 4
1858: MINUS
1859: PPUSH
1860: LD_INT 182
1862: PPUSH
1863: CALL_OW 425
// MoveAreaXY ( monkeright , l - 4 , 182 ) ;
1867: LD_INT 21
1869: PPUSH
1870: LD_VAR 0 4
1874: PUSH
1875: LD_INT 4
1877: MINUS
1878: PPUSH
1879: LD_INT 182
1881: PPUSH
1882: CALL_OW 425
// if i = 15 then
1886: LD_VAR 0 1
1890: PUSH
1891: LD_INT 15
1893: EQUAL
1894: IFFALSE 1904
// i = 95 ;
1896: LD_ADDR_VAR 0 1
1900: PUSH
1901: LD_INT 95
1903: ST_TO_ADDR
// if k = 187 then
1904: LD_VAR 0 2
1908: PUSH
1909: LD_INT 187
1911: EQUAL
1912: IFFALSE 1922
// k = 107 ;
1914: LD_ADDR_VAR 0 2
1918: PUSH
1919: LD_INT 107
1921: ST_TO_ADDR
// if j = 108 then
1922: LD_VAR 0 3
1926: PUSH
1927: LD_INT 108
1929: EQUAL
1930: IFFALSE 1940
// j = 188 ;
1932: LD_ADDR_VAR 0 3
1936: PUSH
1937: LD_INT 188
1939: ST_TO_ADDR
// if l = 281 then
1940: LD_VAR 0 4
1944: PUSH
1945: LD_INT 281
1947: EQUAL
1948: IFFALSE 1958
// l = 201 ;
1950: LD_ADDR_VAR 0 4
1954: PUSH
1955: LD_INT 201
1957: ST_TO_ADDR
// i = i - 1 ;
1958: LD_ADDR_VAR 0 1
1962: PUSH
1963: LD_VAR 0 1
1967: PUSH
1968: LD_INT 1
1970: MINUS
1971: ST_TO_ADDR
// k = k + 1 ;
1972: LD_ADDR_VAR 0 2
1976: PUSH
1977: LD_VAR 0 2
1981: PUSH
1982: LD_INT 1
1984: PLUS
1985: ST_TO_ADDR
// j = j - 1 ;
1986: LD_ADDR_VAR 0 3
1990: PUSH
1991: LD_VAR 0 3
1995: PUSH
1996: LD_INT 1
1998: MINUS
1999: ST_TO_ADDR
// l = l + 1 ;
2000: LD_ADDR_VAR 0 4
2004: PUSH
2005: LD_VAR 0 4
2009: PUSH
2010: LD_INT 1
2012: PLUS
2013: ST_TO_ADDR
// until i = 400 end ;
2014: LD_VAR 0 1
2018: PUSH
2019: LD_INT 400
2021: EQUAL
2022: IFFALSE 1485
2024: PPOPN 4
2026: END
// every 1 1$00 do
2027: GO 2029
2029: DISABLE
// begin waves = 0 ;
2030: LD_ADDR_EXP 1
2034: PUSH
2035: LD_INT 0
2037: ST_TO_ADDR
// repeat waves = waves + 1 ;
2038: LD_ADDR_EXP 1
2042: PUSH
2043: LD_EXP 1
2047: PUSH
2048: LD_INT 1
2050: PLUS
2051: ST_TO_ADDR
// wait ( 1 1$00 ) ;
2052: LD_INT 2100
2054: PPUSH
2055: CALL_OW 67
// until waves = 10000000 ;
2059: LD_EXP 1
2063: PUSH
2064: LD_INT 10000000
2066: EQUAL
2067: IFFALSE 2038
// end ;
2069: END
// every 0 0$03 do var i , j , techs , midtechs , latetechs ;
2070: GO 2072
2072: DISABLE
2073: LD_INT 0
2075: PPUSH
2076: PPUSH
2077: PPUSH
2078: PPUSH
2079: PPUSH
// begin techs = [ 32 , 27 , 36 , 66 , 57 , 69 , 39 , 54 , 63 , 48 , 51 , 60 ] ;
2080: LD_ADDR_VAR 0 3
2084: PUSH
2085: LD_INT 32
2087: PUSH
2088: LD_INT 27
2090: PUSH
2091: LD_INT 36
2093: PUSH
2094: LD_INT 66
2096: PUSH
2097: LD_INT 57
2099: PUSH
2100: LD_INT 69
2102: PUSH
2103: LD_INT 39
2105: PUSH
2106: LD_INT 54
2108: PUSH
2109: LD_INT 63
2111: PUSH
2112: LD_INT 48
2114: PUSH
2115: LD_INT 51
2117: PUSH
2118: LD_INT 60
2120: PUSH
2121: EMPTY
2122: LIST
2123: LIST
2124: LIST
2125: LIST
2126: LIST
2127: LIST
2128: LIST
2129: LIST
2130: LIST
2131: LIST
2132: LIST
2133: LIST
2134: ST_TO_ADDR
// midtechs = [ 67 , 58 , 55 , 64 , 49 , 52 , 61 , 43 ] ;
2135: LD_ADDR_VAR 0 4
2139: PUSH
2140: LD_INT 67
2142: PUSH
2143: LD_INT 58
2145: PUSH
2146: LD_INT 55
2148: PUSH
2149: LD_INT 64
2151: PUSH
2152: LD_INT 49
2154: PUSH
2155: LD_INT 52
2157: PUSH
2158: LD_INT 61
2160: PUSH
2161: LD_INT 43
2163: PUSH
2164: EMPTY
2165: LIST
2166: LIST
2167: LIST
2168: LIST
2169: LIST
2170: LIST
2171: LIST
2172: LIST
2173: ST_TO_ADDR
// latetechs = [ 40 , 71 , 68 , 59 , 31 , 56 , 26 , 29 , 65 , 5 , 30 , 28 , 50 , 53 , 33 , 62 ] ;
2174: LD_ADDR_VAR 0 5
2178: PUSH
2179: LD_INT 40
2181: PUSH
2182: LD_INT 71
2184: PUSH
2185: LD_INT 68
2187: PUSH
2188: LD_INT 59
2190: PUSH
2191: LD_INT 31
2193: PUSH
2194: LD_INT 56
2196: PUSH
2197: LD_INT 26
2199: PUSH
2200: LD_INT 29
2202: PUSH
2203: LD_INT 65
2205: PUSH
2206: LD_INT 5
2208: PUSH
2209: LD_INT 30
2211: PUSH
2212: LD_INT 28
2214: PUSH
2215: LD_INT 50
2217: PUSH
2218: LD_INT 53
2220: PUSH
2221: LD_INT 33
2223: PUSH
2224: LD_INT 62
2226: PUSH
2227: EMPTY
2228: LIST
2229: LIST
2230: LIST
2231: LIST
2232: LIST
2233: LIST
2234: LIST
2235: LIST
2236: LIST
2237: LIST
2238: LIST
2239: LIST
2240: LIST
2241: LIST
2242: LIST
2243: LIST
2244: ST_TO_ADDR
// if waves = 20 then
2245: LD_EXP 1
2249: PUSH
2250: LD_INT 20
2252: EQUAL
2253: IFFALSE 2328
// begin for i = 1 to freesides do
2255: LD_ADDR_VAR 0 1
2259: PUSH
2260: DOUBLE
2261: LD_INT 1
2263: DEC
2264: ST_TO_ADDR
2265: LD_EXP 3
2269: PUSH
2270: FOR_TO
2271: IFFALSE 2326
// for j = 0 to techs do
2273: LD_ADDR_VAR 0 2
2277: PUSH
2278: DOUBLE
2279: LD_INT 0
2281: DEC
2282: ST_TO_ADDR
2283: LD_VAR 0 3
2287: PUSH
2288: FOR_TO
2289: IFFALSE 2322
// SetTech ( techs [ j ] , freesides [ i ] , 2 ) ;
2291: LD_VAR 0 3
2295: PUSH
2296: LD_VAR 0 2
2300: ARRAY
2301: PPUSH
2302: LD_EXP 3
2306: PUSH
2307: LD_VAR 0 1
2311: ARRAY
2312: PPUSH
2313: LD_INT 2
2315: PPUSH
2316: CALL_OW 322
2320: GO 2288
2322: POP
2323: POP
2324: GO 2270
2326: POP
2327: POP
// end ; if waves = 30 then
2328: LD_EXP 1
2332: PUSH
2333: LD_INT 30
2335: EQUAL
2336: IFFALSE 2411
// begin for i = 1 to freesides do
2338: LD_ADDR_VAR 0 1
2342: PUSH
2343: DOUBLE
2344: LD_INT 1
2346: DEC
2347: ST_TO_ADDR
2348: LD_EXP 3
2352: PUSH
2353: FOR_TO
2354: IFFALSE 2409
// for j = 0 to midtechs do
2356: LD_ADDR_VAR 0 2
2360: PUSH
2361: DOUBLE
2362: LD_INT 0
2364: DEC
2365: ST_TO_ADDR
2366: LD_VAR 0 4
2370: PUSH
2371: FOR_TO
2372: IFFALSE 2405
// SetTech ( techs [ j ] , freesides [ i ] , 2 ) ;
2374: LD_VAR 0 3
2378: PUSH
2379: LD_VAR 0 2
2383: ARRAY
2384: PPUSH
2385: LD_EXP 3
2389: PUSH
2390: LD_VAR 0 1
2394: ARRAY
2395: PPUSH
2396: LD_INT 2
2398: PPUSH
2399: CALL_OW 322
2403: GO 2371
2405: POP
2406: POP
2407: GO 2353
2409: POP
2410: POP
// end ; if waves = 40 then
2411: LD_EXP 1
2415: PUSH
2416: LD_INT 40
2418: EQUAL
2419: IFFALSE 2496
// begin for i = 1 to freesides do
2421: LD_ADDR_VAR 0 1
2425: PUSH
2426: DOUBLE
2427: LD_INT 1
2429: DEC
2430: ST_TO_ADDR
2431: LD_EXP 3
2435: PUSH
2436: FOR_TO
2437: IFFALSE 2492
// for j = 0 to latetechs do
2439: LD_ADDR_VAR 0 2
2443: PUSH
2444: DOUBLE
2445: LD_INT 0
2447: DEC
2448: ST_TO_ADDR
2449: LD_VAR 0 5
2453: PUSH
2454: FOR_TO
2455: IFFALSE 2488
// SetTech ( techs [ j ] , freesides [ i ] , 2 ) ;
2457: LD_VAR 0 3
2461: PUSH
2462: LD_VAR 0 2
2466: ARRAY
2467: PPUSH
2468: LD_EXP 3
2472: PUSH
2473: LD_VAR 0 1
2477: ARRAY
2478: PPUSH
2479: LD_INT 2
2481: PPUSH
2482: CALL_OW 322
2486: GO 2454
2488: POP
2489: POP
2490: GO 2436
2492: POP
2493: POP
// exit ;
2494: GO 2497
// end ; enable ;
2496: ENABLE
// end ;
2497: PPOPN 5
2499: END
// every 1 1$00 do var id , i , k , l , m , skill , c , time ;
2500: GO 2502
2502: DISABLE
2503: LD_INT 0
2505: PPUSH
2506: PPUSH
2507: PPUSH
2508: PPUSH
2509: PPUSH
2510: PPUSH
2511: PPUSH
2512: PPUSH
// begin l = [ 42 , 43 , 44 , 45 , 46 ] ;
2513: LD_ADDR_VAR 0 4
2517: PUSH
2518: LD_INT 42
2520: PUSH
2521: LD_INT 43
2523: PUSH
2524: LD_INT 44
2526: PUSH
2527: LD_INT 45
2529: PUSH
2530: LD_INT 46
2532: PUSH
2533: EMPTY
2534: LIST
2535: LIST
2536: LIST
2537: LIST
2538: LIST
2539: ST_TO_ADDR
// m = [ 21 , 22 , 23 , 24 ] ;
2540: LD_ADDR_VAR 0 5
2544: PUSH
2545: LD_INT 21
2547: PUSH
2548: LD_INT 22
2550: PUSH
2551: LD_INT 23
2553: PUSH
2554: LD_INT 24
2556: PUSH
2557: EMPTY
2558: LIST
2559: LIST
2560: LIST
2561: LIST
2562: ST_TO_ADDR
// i = 0 ;
2563: LD_ADDR_VAR 0 2
2567: PUSH
2568: LD_INT 0
2570: ST_TO_ADDR
// repeat i = waves ;
2571: LD_ADDR_VAR 0 2
2575: PUSH
2576: LD_EXP 1
2580: ST_TO_ADDR
// time = 1 1$00 ;
2581: LD_ADDR_VAR 0 8
2585: PUSH
2586: LD_INT 2100
2588: ST_TO_ADDR
// skill = ( i / 6 ) mod 11 ;
2589: LD_ADDR_VAR 0 6
2593: PUSH
2594: LD_VAR 0 2
2598: PUSH
2599: LD_INT 6
2601: DIVREAL
2602: PUSH
2603: LD_INT 11
2605: MOD
2606: ST_TO_ADDR
// uc_nation = 3 ;
2607: LD_ADDR_OWVAR 21
2611: PUSH
2612: LD_INT 3
2614: ST_TO_ADDR
// hc_class = 1 ;
2615: LD_ADDR_OWVAR 28
2619: PUSH
2620: LD_INT 1
2622: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
2623: LD_ADDR_OWVAR 31
2627: PUSH
2628: LD_VAR 0 6
2632: PUSH
2633: LD_VAR 0 6
2637: PUSH
2638: LD_VAR 0 6
2642: PUSH
2643: LD_VAR 0 6
2647: PUSH
2648: EMPTY
2649: LIST
2650: LIST
2651: LIST
2652: LIST
2653: ST_TO_ADDR
// hc_name =  ;
2654: LD_ADDR_OWVAR 26
2658: PUSH
2659: LD_STRING 
2661: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
2662: LD_ADDR_OWVAR 27
2666: PUSH
2667: LD_INT 1
2669: PPUSH
2670: LD_INT 2
2672: PPUSH
2673: CALL_OW 12
2677: ST_TO_ADDR
// vc_control = control_computer ;
2678: LD_ADDR_OWVAR 38
2682: PUSH
2683: LD_INT 3
2685: ST_TO_ADDR
// if waves >= 30 then
2686: LD_EXP 1
2690: PUSH
2691: LD_INT 30
2693: GREATEREQUAL
2694: IFFALSE 2706
// vc_engine = engine_siberite else
2696: LD_ADDR_OWVAR 39
2700: PUSH
2701: LD_INT 3
2703: ST_TO_ADDR
2704: GO 2714
// vc_engine = engine_combustion ;
2706: LD_ADDR_OWVAR 39
2710: PUSH
2711: LD_INT 1
2713: ST_TO_ADDR
// if leftside then
2714: LD_EXP 8
2718: IFFALSE 3044
// for c = 1 to leftside do
2720: LD_ADDR_VAR 0 7
2724: PUSH
2725: DOUBLE
2726: LD_INT 1
2728: DEC
2729: ST_TO_ADDR
2730: LD_EXP 8
2734: PUSH
2735: FOR_TO
2736: IFFALSE 3042
// begin for k = 0 to i do
2738: LD_ADDR_VAR 0 3
2742: PUSH
2743: DOUBLE
2744: LD_INT 0
2746: DEC
2747: ST_TO_ADDR
2748: LD_VAR 0 2
2752: PUSH
2753: FOR_TO
2754: IFFALSE 2797
// begin uc_side = freesides [ 1 ] ;
2756: LD_ADDR_OWVAR 20
2760: PUSH
2761: LD_EXP 3
2765: PUSH
2766: LD_INT 1
2768: ARRAY
2769: ST_TO_ADDR
// id = createhuman ;
2770: LD_ADDR_VAR 0 1
2774: PUSH
2775: CALL_OW 44
2779: ST_TO_ADDR
// PlaceUnitArea ( id , Area02 , false ) ;
2780: LD_VAR 0 1
2784: PPUSH
2785: LD_INT 2
2787: PPUSH
2788: LD_INT 0
2790: PPUSH
2791: CALL_OW 49
// end ;
2795: GO 2753
2797: POP
2798: POP
// for k = 10 to 0 + i do
2799: LD_ADDR_VAR 0 3
2803: PUSH
2804: DOUBLE
2805: LD_INT 10
2807: DEC
2808: ST_TO_ADDR
2809: LD_INT 0
2811: PUSH
2812: LD_VAR 0 2
2816: PLUS
2817: PUSH
2818: FOR_TO
2819: IFFALSE 2902
// begin vc_chassis = m [ k mod 5 ] ;
2821: LD_ADDR_OWVAR 37
2825: PUSH
2826: LD_VAR 0 5
2830: PUSH
2831: LD_VAR 0 3
2835: PUSH
2836: LD_INT 5
2838: MOD
2839: ARRAY
2840: ST_TO_ADDR
// vc_weapon = l [ k mod 4 ] ;
2841: LD_ADDR_OWVAR 40
2845: PUSH
2846: LD_VAR 0 4
2850: PUSH
2851: LD_VAR 0 3
2855: PUSH
2856: LD_INT 4
2858: MOD
2859: ARRAY
2860: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
2861: LD_ADDR_OWVAR 20
2865: PUSH
2866: LD_EXP 3
2870: PUSH
2871: LD_INT 1
2873: ARRAY
2874: ST_TO_ADDR
// id = createvehicle ;
2875: LD_ADDR_VAR 0 1
2879: PUSH
2880: CALL_OW 45
2884: ST_TO_ADDR
// PlaceUnitArea ( id , Area04 , false ) ;
2885: LD_VAR 0 1
2889: PPUSH
2890: LD_INT 4
2892: PPUSH
2893: LD_INT 0
2895: PPUSH
2896: CALL_OW 49
// end ;
2900: GO 2818
2902: POP
2903: POP
// for k = 30 to 0 + i do
2904: LD_ADDR_VAR 0 3
2908: PUSH
2909: DOUBLE
2910: LD_INT 30
2912: DEC
2913: ST_TO_ADDR
2914: LD_INT 0
2916: PUSH
2917: LD_VAR 0 2
2921: PLUS
2922: PUSH
2923: FOR_TO
2924: IFFALSE 3007
// begin vc_chassis = m [ k mod 5 ] ;
2926: LD_ADDR_OWVAR 37
2930: PUSH
2931: LD_VAR 0 5
2935: PUSH
2936: LD_VAR 0 3
2940: PUSH
2941: LD_INT 5
2943: MOD
2944: ARRAY
2945: ST_TO_ADDR
// vc_weapon = l [ k mod 6 ] ;
2946: LD_ADDR_OWVAR 40
2950: PUSH
2951: LD_VAR 0 4
2955: PUSH
2956: LD_VAR 0 3
2960: PUSH
2961: LD_INT 6
2963: MOD
2964: ARRAY
2965: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
2966: LD_ADDR_OWVAR 20
2970: PUSH
2971: LD_EXP 3
2975: PUSH
2976: LD_INT 1
2978: ARRAY
2979: ST_TO_ADDR
// id = createvehicle ;
2980: LD_ADDR_VAR 0 1
2984: PUSH
2985: CALL_OW 45
2989: ST_TO_ADDR
// PlaceUnitArea ( id , Area10 , false ) ;
2990: LD_VAR 0 1
2994: PPUSH
2995: LD_INT 10
2997: PPUSH
2998: LD_INT 0
3000: PPUSH
3001: CALL_OW 49
// end ;
3005: GO 2923
3007: POP
3008: POP
// if leftside <> 1 then
3009: LD_EXP 8
3013: PUSH
3014: LD_INT 1
3016: NONEQUAL
3017: IFFALSE 3040
// begin time = time - 0 0$02 ;
3019: LD_ADDR_VAR 0 8
3023: PUSH
3024: LD_VAR 0 8
3028: PUSH
3029: LD_INT 70
3031: MINUS
3032: ST_TO_ADDR
// wait ( 0 0$02 ) ;
3033: LD_INT 70
3035: PPUSH
3036: CALL_OW 67
// end ; end ;
3040: GO 2735
3042: POP
3043: POP
// if rightside then
3044: LD_EXP 9
3048: IFFALSE 3374
// for c = 1 to rightside do
3050: LD_ADDR_VAR 0 7
3054: PUSH
3055: DOUBLE
3056: LD_INT 1
3058: DEC
3059: ST_TO_ADDR
3060: LD_EXP 9
3064: PUSH
3065: FOR_TO
3066: IFFALSE 3372
// begin for k = 0 to i do
3068: LD_ADDR_VAR 0 3
3072: PUSH
3073: DOUBLE
3074: LD_INT 0
3076: DEC
3077: ST_TO_ADDR
3078: LD_VAR 0 2
3082: PUSH
3083: FOR_TO
3084: IFFALSE 3127
// begin uc_side = freesides [ 2 ] ;
3086: LD_ADDR_OWVAR 20
3090: PUSH
3091: LD_EXP 3
3095: PUSH
3096: LD_INT 2
3098: ARRAY
3099: ST_TO_ADDR
// id = createhuman ;
3100: LD_ADDR_VAR 0 1
3104: PUSH
3105: CALL_OW 44
3109: ST_TO_ADDR
// PlaceUnitArea ( id , Area03 , false ) ;
3110: LD_VAR 0 1
3114: PPUSH
3115: LD_INT 3
3117: PPUSH
3118: LD_INT 0
3120: PPUSH
3121: CALL_OW 49
// end ;
3125: GO 3083
3127: POP
3128: POP
// for k = 10 to 0 + i do
3129: LD_ADDR_VAR 0 3
3133: PUSH
3134: DOUBLE
3135: LD_INT 10
3137: DEC
3138: ST_TO_ADDR
3139: LD_INT 0
3141: PUSH
3142: LD_VAR 0 2
3146: PLUS
3147: PUSH
3148: FOR_TO
3149: IFFALSE 3232
// begin vc_chassis = m [ k mod 5 ] ;
3151: LD_ADDR_OWVAR 37
3155: PUSH
3156: LD_VAR 0 5
3160: PUSH
3161: LD_VAR 0 3
3165: PUSH
3166: LD_INT 5
3168: MOD
3169: ARRAY
3170: ST_TO_ADDR
// vc_weapon = l [ k mod 4 ] ;
3171: LD_ADDR_OWVAR 40
3175: PUSH
3176: LD_VAR 0 4
3180: PUSH
3181: LD_VAR 0 3
3185: PUSH
3186: LD_INT 4
3188: MOD
3189: ARRAY
3190: ST_TO_ADDR
// uc_side = freesides [ 2 ] ;
3191: LD_ADDR_OWVAR 20
3195: PUSH
3196: LD_EXP 3
3200: PUSH
3201: LD_INT 2
3203: ARRAY
3204: ST_TO_ADDR
// id = createvehicle ;
3205: LD_ADDR_VAR 0 1
3209: PUSH
3210: CALL_OW 45
3214: ST_TO_ADDR
// PlaceUnitArea ( id , Area05 , false ) ;
3215: LD_VAR 0 1
3219: PPUSH
3220: LD_INT 5
3222: PPUSH
3223: LD_INT 0
3225: PPUSH
3226: CALL_OW 49
// end ;
3230: GO 3148
3232: POP
3233: POP
// for k = 30 to 0 + i do
3234: LD_ADDR_VAR 0 3
3238: PUSH
3239: DOUBLE
3240: LD_INT 30
3242: DEC
3243: ST_TO_ADDR
3244: LD_INT 0
3246: PUSH
3247: LD_VAR 0 2
3251: PLUS
3252: PUSH
3253: FOR_TO
3254: IFFALSE 3337
// begin vc_chassis = m [ k mod 5 ] ;
3256: LD_ADDR_OWVAR 37
3260: PUSH
3261: LD_VAR 0 5
3265: PUSH
3266: LD_VAR 0 3
3270: PUSH
3271: LD_INT 5
3273: MOD
3274: ARRAY
3275: ST_TO_ADDR
// vc_weapon = l [ k mod 6 ] ;
3276: LD_ADDR_OWVAR 40
3280: PUSH
3281: LD_VAR 0 4
3285: PUSH
3286: LD_VAR 0 3
3290: PUSH
3291: LD_INT 6
3293: MOD
3294: ARRAY
3295: ST_TO_ADDR
// uc_side = freesides [ 2 ] ;
3296: LD_ADDR_OWVAR 20
3300: PUSH
3301: LD_EXP 3
3305: PUSH
3306: LD_INT 2
3308: ARRAY
3309: ST_TO_ADDR
// id = createvehicle ;
3310: LD_ADDR_VAR 0 1
3314: PUSH
3315: CALL_OW 45
3319: ST_TO_ADDR
// PlaceUnitArea ( id , Area11 , false ) ;
3320: LD_VAR 0 1
3324: PPUSH
3325: LD_INT 11
3327: PPUSH
3328: LD_INT 0
3330: PPUSH
3331: CALL_OW 49
// end ;
3335: GO 3253
3337: POP
3338: POP
// if rightside <> 1 then
3339: LD_EXP 9
3343: PUSH
3344: LD_INT 1
3346: NONEQUAL
3347: IFFALSE 3370
// begin time = time - 0 0$02 ;
3349: LD_ADDR_VAR 0 8
3353: PUSH
3354: LD_VAR 0 8
3358: PUSH
3359: LD_INT 70
3361: MINUS
3362: ST_TO_ADDR
// wait ( 0 0$02 ) ;
3363: LD_INT 70
3365: PPUSH
3366: CALL_OW 67
// end ; end ;
3370: GO 3065
3372: POP
3373: POP
// wait ( time ) ;
3374: LD_VAR 0 8
3378: PPUSH
3379: CALL_OW 67
// until i = 1000000 end ;
3383: LD_VAR 0 2
3387: PUSH
3388: LD_INT 1000000
3390: EQUAL
3391: IFFALSE 2571
3393: PPOPN 8
3395: END
// every 0 0$25 do var time , i ;
3396: GO 3398
3398: DISABLE
3399: LD_INT 0
3401: PPUSH
3402: PPUSH
// begin time = rand ( 0 0$05 , 0 0$25 ) ;
3403: LD_ADDR_VAR 0 1
3407: PUSH
3408: LD_INT 175
3410: PPUSH
3411: LD_INT 875
3413: PPUSH
3414: CALL_OW 12
3418: ST_TO_ADDR
// wait ( time ) ;
3419: LD_VAR 0 1
3423: PPUSH
3424: CALL_OW 67
// if GetMultiplayerSetting ( 15 ) = 1 then
3428: LD_INT 15
3430: PPUSH
3431: CALL_OW 426
3435: PUSH
3436: LD_INT 1
3438: EQUAL
3439: IFFALSE 3478
// for i = 1 to leftside do
3441: LD_ADDR_VAR 0 2
3445: PUSH
3446: DOUBLE
3447: LD_INT 1
3449: DEC
3450: ST_TO_ADDR
3451: LD_EXP 8
3455: PUSH
3456: FOR_TO
3457: IFFALSE 3474
// CreateCratesArea ( 3 , Area06 , true ) else
3459: LD_INT 3
3461: PPUSH
3462: LD_INT 6
3464: PPUSH
3465: LD_INT 1
3467: PPUSH
3468: CALL_OW 55
3472: GO 3456
3474: POP
3475: POP
3476: GO 3491
// CreateCratesArea ( 3 , Area06 , true ) ;
3478: LD_INT 3
3480: PPUSH
3481: LD_INT 6
3483: PPUSH
3484: LD_INT 1
3486: PPUSH
3487: CALL_OW 55
// if GetMultiplayerSetting ( 15 ) = 1 then
3491: LD_INT 15
3493: PPUSH
3494: CALL_OW 426
3498: PUSH
3499: LD_INT 1
3501: EQUAL
3502: IFFALSE 3541
// for i = 1 to rightside do
3504: LD_ADDR_VAR 0 2
3508: PUSH
3509: DOUBLE
3510: LD_INT 1
3512: DEC
3513: ST_TO_ADDR
3514: LD_EXP 9
3518: PUSH
3519: FOR_TO
3520: IFFALSE 3537
// CreateCratesArea ( 3 , Area07 , true ) else
3522: LD_INT 3
3524: PPUSH
3525: LD_INT 7
3527: PPUSH
3528: LD_INT 1
3530: PPUSH
3531: CALL_OW 55
3535: GO 3519
3537: POP
3538: POP
3539: GO 3554
// CreateCratesArea ( 3 , Area07 , true ) ;
3541: LD_INT 3
3543: PPUSH
3544: LD_INT 7
3546: PPUSH
3547: LD_INT 1
3549: PPUSH
3550: CALL_OW 55
// wait ( 0 0$35 - time ) ;
3554: LD_INT 1225
3556: PUSH
3557: LD_VAR 0 1
3561: MINUS
3562: PPUSH
3563: CALL_OW 67
// enable ;
3567: ENABLE
// end ;
3568: PPOPN 2
3570: END
// every 2 2$30 do var time ;
3571: GO 3573
3573: DISABLE
3574: LD_INT 0
3576: PPUSH
// begin time = rand ( 0 0$05 , 0 0$25 ) ;
3577: LD_ADDR_VAR 0 1
3581: PUSH
3582: LD_INT 175
3584: PPUSH
3585: LD_INT 875
3587: PPUSH
3588: CALL_OW 12
3592: ST_TO_ADDR
// wait ( time ) ;
3593: LD_VAR 0 1
3597: PPUSH
3598: CALL_OW 67
// CreateResourcesArea ( Mat_siberit , 1 , sibleft , true ) ;
3602: LD_INT 3
3604: PPUSH
3605: LD_INT 1
3607: PPUSH
3608: LD_INT 16
3610: PPUSH
3611: LD_INT 1
3613: PPUSH
3614: CALL_OW 59
// CreateResourcesArea ( Mat_siberit , 1 , sibright , true ) ;
3618: LD_INT 3
3620: PPUSH
3621: LD_INT 1
3623: PPUSH
3624: LD_INT 17
3626: PPUSH
3627: LD_INT 1
3629: PPUSH
3630: CALL_OW 59
// wait ( 0 0$30 - time ) ;
3634: LD_INT 1050
3636: PUSH
3637: LD_VAR 0 1
3641: MINUS
3642: PPUSH
3643: CALL_OW 67
// enable ;
3647: ENABLE
// end ;
3648: PPOPN 1
3650: END
// every 0 0$45 do var time ;
3651: GO 3653
3653: DISABLE
3654: LD_INT 0
3656: PPUSH
// begin time = rand ( 0 0$01 , 0 0$14 ) ;
3657: LD_ADDR_VAR 0 1
3661: PUSH
3662: LD_INT 35
3664: PPUSH
3665: LD_INT 490
3667: PPUSH
3668: CALL_OW 12
3672: ST_TO_ADDR
// wait ( time ) ;
3673: LD_VAR 0 1
3677: PPUSH
3678: CALL_OW 67
// CreateResourcesArea ( Mat_oil , 2 , oilleft , true ) ;
3682: LD_INT 2
3684: PPUSH
3685: LD_INT 2
3687: PPUSH
3688: LD_INT 18
3690: PPUSH
3691: LD_INT 1
3693: PPUSH
3694: CALL_OW 59
// CreateResourcesArea ( Mat_oil , 2 , oilright , true ) ;
3698: LD_INT 2
3700: PPUSH
3701: LD_INT 2
3703: PPUSH
3704: LD_INT 19
3706: PPUSH
3707: LD_INT 1
3709: PPUSH
3710: CALL_OW 59
// wait ( 0 0$15 - time ) ;
3714: LD_INT 525
3716: PUSH
3717: LD_VAR 0 1
3721: MINUS
3722: PPUSH
3723: CALL_OW 67
// enable ;
3727: ENABLE
// end ;
3728: PPOPN 1
3730: END
// every 2 2$45 do var time , skill , id ;
3731: GO 3733
3733: DISABLE
3734: LD_INT 0
3736: PPUSH
3737: PPUSH
3738: PPUSH
// begin skill = ( waves / 7 ) mod 11 ;
3739: LD_ADDR_VAR 0 2
3743: PUSH
3744: LD_EXP 1
3748: PUSH
3749: LD_INT 7
3751: DIVREAL
3752: PUSH
3753: LD_INT 11
3755: MOD
3756: ST_TO_ADDR
// time = rand ( 0 0$01 , 0 0$14 ) ;
3757: LD_ADDR_VAR 0 1
3761: PUSH
3762: LD_INT 35
3764: PPUSH
3765: LD_INT 490
3767: PPUSH
3768: CALL_OW 12
3772: ST_TO_ADDR
// wait ( time ) ;
3773: LD_VAR 0 1
3777: PPUSH
3778: CALL_OW 67
// uc_side = 0 ;
3782: LD_ADDR_OWVAR 20
3786: PUSH
3787: LD_INT 0
3789: ST_TO_ADDR
// uc_nation = 0 ;
3790: LD_ADDR_OWVAR 21
3794: PUSH
3795: LD_INT 0
3797: ST_TO_ADDR
// hc_class = 12 ;
3798: LD_ADDR_OWVAR 28
3802: PUSH
3803: LD_INT 12
3805: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
3806: LD_ADDR_OWVAR 31
3810: PUSH
3811: LD_VAR 0 2
3815: PUSH
3816: LD_VAR 0 2
3820: PUSH
3821: LD_VAR 0 2
3825: PUSH
3826: LD_VAR 0 2
3830: PUSH
3831: EMPTY
3832: LIST
3833: LIST
3834: LIST
3835: LIST
3836: ST_TO_ADDR
// hc_name =  ;
3837: LD_ADDR_OWVAR 26
3841: PUSH
3842: LD_STRING 
3844: ST_TO_ADDR
// id = createhuman ;
3845: LD_ADDR_VAR 0 3
3849: PUSH
3850: CALL_OW 44
3854: ST_TO_ADDR
// PlaceUnitArea ( id , monkeleft , false ) ;
3855: LD_VAR 0 3
3859: PPUSH
3860: LD_INT 20
3862: PPUSH
3863: LD_INT 0
3865: PPUSH
3866: CALL_OW 49
// id = createhuman ;
3870: LD_ADDR_VAR 0 3
3874: PUSH
3875: CALL_OW 44
3879: ST_TO_ADDR
// PlaceUnitArea ( id , monkeright , false ) ;
3880: LD_VAR 0 3
3884: PPUSH
3885: LD_INT 21
3887: PPUSH
3888: LD_INT 0
3890: PPUSH
3891: CALL_OW 49
// wait ( 0 0$15 - time ) ;
3895: LD_INT 525
3897: PUSH
3898: LD_VAR 0 1
3902: MINUS
3903: PPUSH
3904: CALL_OW 67
// enable ;
3908: ENABLE
// end ;
3909: PPOPN 3
3911: END
// every 0 0$01 do var p1 , a1 , p2 , a2 , i ;
3912: GO 3914
3914: DISABLE
3915: LD_INT 0
3917: PPUSH
3918: PPUSH
3919: PPUSH
3920: PPUSH
3921: PPUSH
// begin leftside = [ 1 , 1 , 1 ] ;
3922: LD_ADDR_EXP 8
3926: PUSH
3927: LD_INT 1
3929: PUSH
3930: LD_INT 1
3932: PUSH
3933: LD_INT 1
3935: PUSH
3936: EMPTY
3937: LIST
3938: LIST
3939: LIST
3940: ST_TO_ADDR
// rightside = [ 2 , 2 , 2 ] ;
3941: LD_ADDR_EXP 9
3945: PUSH
3946: LD_INT 2
3948: PUSH
3949: LD_INT 2
3951: PUSH
3952: LD_INT 2
3954: PUSH
3955: EMPTY
3956: LIST
3957: LIST
3958: LIST
3959: ST_TO_ADDR
// if Multiplayer then
3960: LD_OWVAR 4
3964: IFFALSE 4130
// begin leftside = [ ] ;
3966: LD_ADDR_EXP 8
3970: PUSH
3971: EMPTY
3972: ST_TO_ADDR
// rightside = [ ] ;
3973: LD_ADDR_EXP 9
3977: PUSH
3978: EMPTY
3979: ST_TO_ADDR
// for i = 1 to 8 do
3980: LD_ADDR_VAR 0 5
3984: PUSH
3985: DOUBLE
3986: LD_INT 1
3988: DEC
3989: ST_TO_ADDR
3990: LD_INT 8
3992: PUSH
3993: FOR_TO
3994: IFFALSE 4128
// if mp_sides_positions [ i ] = 1 or mp_sides_positions [ i ] = 2 or mp_sides_positions [ i ] = 3 then
3996: LD_OWVAR 17
4000: PUSH
4001: LD_VAR 0 5
4005: ARRAY
4006: PUSH
4007: LD_INT 1
4009: EQUAL
4010: PUSH
4011: LD_OWVAR 17
4015: PUSH
4016: LD_VAR 0 5
4020: ARRAY
4021: PUSH
4022: LD_INT 2
4024: EQUAL
4025: OR
4026: PUSH
4027: LD_OWVAR 17
4031: PUSH
4032: LD_VAR 0 5
4036: ARRAY
4037: PUSH
4038: LD_INT 3
4040: EQUAL
4041: OR
4042: IFFALSE 4062
// leftside = leftside ^ i else
4044: LD_ADDR_EXP 8
4048: PUSH
4049: LD_EXP 8
4053: PUSH
4054: LD_VAR 0 5
4058: ADD
4059: ST_TO_ADDR
4060: GO 4126
// if mp_sides_positions [ i ] = 4 or mp_sides_positions [ i ] = 5 or mp_sides_positions [ i ] = 6 then
4062: LD_OWVAR 17
4066: PUSH
4067: LD_VAR 0 5
4071: ARRAY
4072: PUSH
4073: LD_INT 4
4075: EQUAL
4076: PUSH
4077: LD_OWVAR 17
4081: PUSH
4082: LD_VAR 0 5
4086: ARRAY
4087: PUSH
4088: LD_INT 5
4090: EQUAL
4091: OR
4092: PUSH
4093: LD_OWVAR 17
4097: PUSH
4098: LD_VAR 0 5
4102: ARRAY
4103: PUSH
4104: LD_INT 6
4106: EQUAL
4107: OR
4108: IFFALSE 4126
// rightside = rightside ^ i ;
4110: LD_ADDR_EXP 9
4114: PUSH
4115: LD_EXP 9
4119: PUSH
4120: LD_VAR 0 5
4124: ADD
4125: ST_TO_ADDR
4126: GO 3993
4128: POP
4129: POP
// end ; repeat wait ( 0 0$01 ) ;
4130: LD_INT 35
4132: PPUSH
4133: CALL_OW 67
// if leftside then
4137: LD_EXP 8
4141: IFFALSE 4236
// begin p1 = FilterAllUnits ( [ f_or , [ f_side , leftside [ 1 ] ] , [ f_side , leftside [ 2 ] ] , [ f_side , leftside [ 3 ] ] ] ) ;
4143: LD_ADDR_VAR 0 1
4147: PUSH
4148: LD_INT 2
4150: PUSH
4151: LD_INT 22
4153: PUSH
4154: LD_EXP 8
4158: PUSH
4159: LD_INT 1
4161: ARRAY
4162: PUSH
4163: EMPTY
4164: LIST
4165: LIST
4166: PUSH
4167: LD_INT 22
4169: PUSH
4170: LD_EXP 8
4174: PUSH
4175: LD_INT 2
4177: ARRAY
4178: PUSH
4179: EMPTY
4180: LIST
4181: LIST
4182: PUSH
4183: LD_INT 22
4185: PUSH
4186: LD_EXP 8
4190: PUSH
4191: LD_INT 3
4193: ARRAY
4194: PUSH
4195: EMPTY
4196: LIST
4197: LIST
4198: PUSH
4199: EMPTY
4200: LIST
4201: LIST
4202: LIST
4203: LIST
4204: PPUSH
4205: CALL_OW 69
4209: ST_TO_ADDR
// a1 = FilterAllUnits ( [ f_side , freesides [ 1 ] ] ) ;
4210: LD_ADDR_VAR 0 2
4214: PUSH
4215: LD_INT 22
4217: PUSH
4218: LD_EXP 3
4222: PUSH
4223: LD_INT 1
4225: ARRAY
4226: PUSH
4227: EMPTY
4228: LIST
4229: LIST
4230: PPUSH
4231: CALL_OW 69
4235: ST_TO_ADDR
// end ; if rightside then
4236: LD_EXP 9
4240: IFFALSE 4335
// begin p2 = FilterAllUnits ( [ f_or , [ f_side , rightside [ 1 ] ] , [ f_side , rightside [ 2 ] ] , [ f_side , rightside [ 3 ] ] ] ) ;
4242: LD_ADDR_VAR 0 3
4246: PUSH
4247: LD_INT 2
4249: PUSH
4250: LD_INT 22
4252: PUSH
4253: LD_EXP 9
4257: PUSH
4258: LD_INT 1
4260: ARRAY
4261: PUSH
4262: EMPTY
4263: LIST
4264: LIST
4265: PUSH
4266: LD_INT 22
4268: PUSH
4269: LD_EXP 9
4273: PUSH
4274: LD_INT 2
4276: ARRAY
4277: PUSH
4278: EMPTY
4279: LIST
4280: LIST
4281: PUSH
4282: LD_INT 22
4284: PUSH
4285: LD_EXP 9
4289: PUSH
4290: LD_INT 3
4292: ARRAY
4293: PUSH
4294: EMPTY
4295: LIST
4296: LIST
4297: PUSH
4298: EMPTY
4299: LIST
4300: LIST
4301: LIST
4302: LIST
4303: PPUSH
4304: CALL_OW 69
4308: ST_TO_ADDR
// a2 = FilterAllUnits ( [ f_side , freesides [ 2 ] ] ) ;
4309: LD_ADDR_VAR 0 4
4313: PUSH
4314: LD_INT 22
4316: PUSH
4317: LD_EXP 3
4321: PUSH
4322: LD_INT 2
4324: ARRAY
4325: PUSH
4326: EMPTY
4327: LIST
4328: LIST
4329: PPUSH
4330: CALL_OW 69
4334: ST_TO_ADDR
// end ; if p1 = 0 then
4335: LD_VAR 0 1
4339: PUSH
4340: LD_INT 0
4342: EQUAL
4343: IFFALSE 4353
// leftside = 0 ;
4345: LD_ADDR_EXP 8
4349: PUSH
4350: LD_INT 0
4352: ST_TO_ADDR
// if p2 = 0 then
4353: LD_VAR 0 3
4357: PUSH
4358: LD_INT 0
4360: EQUAL
4361: IFFALSE 4371
// rightside = 0 ;
4363: LD_ADDR_EXP 9
4367: PUSH
4368: LD_INT 0
4370: ST_TO_ADDR
// for i in a1 do
4371: LD_ADDR_VAR 0 5
4375: PUSH
4376: LD_VAR 0 2
4380: PUSH
4381: FOR_IN
4382: IFFALSE 4410
// ComAttackUnit ( i , NearestUnitToUnit ( p1 , i ) ) ;
4384: LD_VAR 0 5
4388: PPUSH
4389: LD_VAR 0 1
4393: PPUSH
4394: LD_VAR 0 5
4398: PPUSH
4399: CALL_OW 74
4403: PPUSH
4404: CALL_OW 115
4408: GO 4381
4410: POP
4411: POP
// for i in a2 do
4412: LD_ADDR_VAR 0 5
4416: PUSH
4417: LD_VAR 0 4
4421: PUSH
4422: FOR_IN
4423: IFFALSE 4451
// ComAttackUnit ( i , NearestUnitToUnit ( p2 , i ) ) ;
4425: LD_VAR 0 5
4429: PPUSH
4430: LD_VAR 0 3
4434: PPUSH
4435: LD_VAR 0 5
4439: PPUSH
4440: CALL_OW 74
4444: PPUSH
4445: CALL_OW 115
4449: GO 4422
4451: POP
4452: POP
// until a2 = 100000 end ;
4453: LD_VAR 0 4
4457: PUSH
4458: LD_INT 100000
4460: EQUAL
4461: IFFALSE 4130
4463: PPOPN 5
4465: END
// export function ShowTimer ; var AllStrings , ExtraStrings ; begin
4466: LD_INT 0
4468: PPUSH
4469: PPUSH
4470: PPUSH
// if timer <= 0 then
4471: LD_EXP 2
4475: PUSH
4476: LD_INT 0
4478: LESSEQUAL
4479: IFFALSE 4489
// timer = 60 ;
4481: LD_ADDR_EXP 2
4485: PUSH
4486: LD_INT 60
4488: ST_TO_ADDR
// timer = timer - 1 ;
4489: LD_ADDR_EXP 2
4493: PUSH
4494: LD_EXP 2
4498: PUSH
4499: LD_INT 1
4501: MINUS
4502: ST_TO_ADDR
// AllStrings := [ #timer , tick ] ;
4503: LD_ADDR_VAR 0 2
4507: PUSH
4508: LD_STRING #timer
4510: PUSH
4511: LD_OWVAR 1
4515: PUSH
4516: EMPTY
4517: LIST
4518: LIST
4519: ST_TO_ADDR
// ExtraStrings := [ #wave , waves ] ^  ^ [ #newwave , timer ] ;
4520: LD_ADDR_VAR 0 3
4524: PUSH
4525: LD_STRING #wave
4527: PUSH
4528: LD_EXP 1
4532: PUSH
4533: EMPTY
4534: LIST
4535: LIST
4536: PUSH
4537: LD_STRING 
4539: ADD
4540: PUSH
4541: LD_STRING #newwave
4543: PUSH
4544: LD_EXP 2
4548: PUSH
4549: EMPTY
4550: LIST
4551: LIST
4552: ADD
4553: ST_TO_ADDR
// if ( ExtraStrings ) then
4554: LD_VAR 0 3
4558: IFFALSE 4580
// AllStrings := AllStrings ^  ^ ExtraStrings ;
4560: LD_ADDR_VAR 0 2
4564: PUSH
4565: LD_VAR 0 2
4569: PUSH
4570: LD_STRING 
4572: ADD
4573: PUSH
4574: LD_VAR 0 3
4578: ADD
4579: ST_TO_ADDR
// Display_Strings := AllStrings ;
4580: LD_ADDR_OWVAR 47
4584: PUSH
4585: LD_VAR 0 2
4589: ST_TO_ADDR
// end ;
4590: LD_VAR 0 1
4594: RET
// every 0 0$1 do
4595: GO 4597
4597: DISABLE
// begin ShowTimer ;
4598: CALL 4466 0 0
// enable ;
4602: ENABLE
// end ;
4603: END
// on UnitDestroyed ( u ) do var i , k ;
4604: LD_INT 0
4606: PPUSH
4607: PPUSH
// begin if GetType ( u ) = unit_human then
4608: LD_VAR 0 1
4612: PPUSH
4613: CALL_OW 247
4617: PUSH
4618: LD_INT 1
4620: EQUAL
4621: IFFALSE 4870
// if GetClass ( u ) = 12 and GetMultiplayerSetting ( 14 ) = 0 then
4623: LD_VAR 0 1
4627: PPUSH
4628: CALL_OW 257
4632: PUSH
4633: LD_INT 12
4635: EQUAL
4636: PUSH
4637: LD_INT 14
4639: PPUSH
4640: CALL_OW 426
4644: PUSH
4645: LD_INT 0
4647: EQUAL
4648: AND
4649: IFFALSE 4655
// exit else
4651: GO 4870
4653: GO 4870
// for i = 1 to playersides do
4655: LD_ADDR_VAR 0 2
4659: PUSH
4660: DOUBLE
4661: LD_INT 1
4663: DEC
4664: ST_TO_ADDR
4665: LD_EXP 4
4669: PUSH
4670: FOR_TO
4671: IFFALSE 4868
// if GetSide ( u ) = playersides [ i ] then
4673: LD_VAR 0 1
4677: PPUSH
4678: CALL_OW 255
4682: PUSH
4683: LD_EXP 4
4687: PUSH
4688: LD_VAR 0 2
4692: ARRAY
4693: EQUAL
4694: IFFALSE 4866
// begin if GetClass ( u ) = 12 then
4696: LD_VAR 0 1
4700: PPUSH
4701: CALL_OW 257
4705: PUSH
4706: LD_INT 12
4708: EQUAL
4709: IFFALSE 4802
// begin if GetMultiplayerSetting ( 14 ) = 2 then
4711: LD_INT 14
4713: PPUSH
4714: CALL_OW 426
4718: PUSH
4719: LD_INT 2
4721: EQUAL
4722: IFFALSE 4761
// apequeue := Replace ( apequeue , i , apequeue [ i ] + 1 ) else
4724: LD_ADDR_EXP 10
4728: PUSH
4729: LD_EXP 10
4733: PPUSH
4734: LD_VAR 0 2
4738: PPUSH
4739: LD_EXP 10
4743: PUSH
4744: LD_VAR 0 2
4748: ARRAY
4749: PUSH
4750: LD_INT 1
4752: PLUS
4753: PPUSH
4754: CALL_OW 1
4758: ST_TO_ADDR
4759: GO 4796
// queue := Replace ( queue , i , queue [ i ] + 1 ) ;
4761: LD_ADDR_EXP 5
4765: PUSH
4766: LD_EXP 5
4770: PPUSH
4771: LD_VAR 0 2
4775: PPUSH
4776: LD_EXP 5
4780: PUSH
4781: LD_VAR 0 2
4785: ARRAY
4786: PUSH
4787: LD_INT 1
4789: PLUS
4790: PPUSH
4791: CALL_OW 1
4795: ST_TO_ADDR
// PrepareRespawn ;
4796: CALL 4873 0 0
// end else
4800: GO 4866
// begin queue := Replace ( queue , i , queue [ i ] + 1 ) ;
4802: LD_ADDR_EXP 5
4806: PUSH
4807: LD_EXP 5
4811: PPUSH
4812: LD_VAR 0 2
4816: PPUSH
4817: LD_EXP 5
4821: PUSH
4822: LD_VAR 0 2
4826: ARRAY
4827: PUSH
4828: LD_INT 1
4830: PLUS
4831: PPUSH
4832: CALL_OW 1
4836: ST_TO_ADDR
// if Multiplayer then
4837: LD_OWVAR 4
4841: IFFALSE 4862
// begin if GetMultiplayerSetting ( 13 ) <> 0 then
4843: LD_INT 13
4845: PPUSH
4846: CALL_OW 426
4850: PUSH
4851: LD_INT 0
4853: NONEQUAL
4854: IFFALSE 4860
// PrepareRespawn ;
4856: CALL 4873 0 0
// end else
4860: GO 4866
// PrepareRespawn ;
4862: CALL 4873 0 0
// end ; end ;
4866: GO 4670
4868: POP
4869: POP
// end ;
4870: PPOPN 3
4872: END
// export function PrepareRespawn ; var depots , b , i , k , l , clock ; begin
4873: LD_INT 0
4875: PPUSH
4876: PPUSH
4877: PPUSH
4878: PPUSH
4879: PPUSH
4880: PPUSH
4881: PPUSH
// clock = 2 2$30 ;
4882: LD_ADDR_VAR 0 7
4886: PUSH
4887: LD_INT 5250
4889: ST_TO_ADDR
// if Multiplayer then
4890: LD_OWVAR 4
4894: IFFALSE 4938
// begin if GetMultiplayerSetting ( 13 ) = 1 then
4896: LD_INT 13
4898: PPUSH
4899: CALL_OW 426
4903: PUSH
4904: LD_INT 1
4906: EQUAL
4907: IFFALSE 4917
// clock = 4 4$30 ;
4909: LD_ADDR_VAR 0 7
4913: PUSH
4914: LD_INT 9450
4916: ST_TO_ADDR
// if GetMultiplayerSetting ( 13 ) = 2 then
4917: LD_INT 13
4919: PPUSH
4920: CALL_OW 426
4924: PUSH
4925: LD_INT 2
4927: EQUAL
4928: IFFALSE 4938
// clock = 2 2$00 ;
4930: LD_ADDR_VAR 0 7
4934: PUSH
4935: LD_INT 4200
4937: ST_TO_ADDR
// end ; wait ( clock ) ;
4938: LD_VAR 0 7
4942: PPUSH
4943: CALL_OW 67
// for i = 1 to playersides do
4947: LD_ADDR_VAR 0 4
4951: PUSH
4952: DOUBLE
4953: LD_INT 1
4955: DEC
4956: ST_TO_ADDR
4957: LD_EXP 4
4961: PUSH
4962: FOR_TO
4963: IFFALSE 5624
// if apequeue [ i ] > 0 then
4965: LD_EXP 10
4969: PUSH
4970: LD_VAR 0 4
4974: ARRAY
4975: PUSH
4976: LD_INT 0
4978: GREATER
4979: IFFALSE 5276
// begin depots = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , playersides [ i ] ] ] ) ;
4981: LD_ADDR_VAR 0 2
4985: PUSH
4986: LD_INT 2
4988: PUSH
4989: LD_INT 30
4991: PUSH
4992: LD_INT 0
4994: PUSH
4995: EMPTY
4996: LIST
4997: LIST
4998: PUSH
4999: LD_INT 30
5001: PUSH
5002: LD_INT 1
5004: PUSH
5005: EMPTY
5006: LIST
5007: LIST
5008: PUSH
5009: EMPTY
5010: LIST
5011: LIST
5012: LIST
5013: PUSH
5014: LD_INT 22
5016: PUSH
5017: LD_EXP 4
5021: PUSH
5022: LD_VAR 0 4
5026: ARRAY
5027: PUSH
5028: EMPTY
5029: LIST
5030: LIST
5031: PUSH
5032: EMPTY
5033: LIST
5034: LIST
5035: PPUSH
5036: CALL_OW 69
5040: ST_TO_ADDR
// if depots then
5041: LD_VAR 0 2
5045: IFFALSE 5251
// for l = 1 to apequeue [ i ] do
5047: LD_ADDR_VAR 0 6
5051: PUSH
5052: DOUBLE
5053: LD_INT 1
5055: DEC
5056: ST_TO_ADDR
5057: LD_EXP 10
5061: PUSH
5062: LD_VAR 0 4
5066: ARRAY
5067: PUSH
5068: FOR_TO
5069: IFFALSE 5249
// begin b := depots [ Rand ( 1 , depots ) ] ;
5071: LD_ADDR_VAR 0 3
5075: PUSH
5076: LD_VAR 0 2
5080: PUSH
5081: LD_INT 1
5083: PPUSH
5084: LD_VAR 0 2
5088: PPUSH
5089: CALL_OW 12
5093: ARRAY
5094: ST_TO_ADDR
// uc_side = playersides [ i ] ;
5095: LD_ADDR_OWVAR 20
5099: PUSH
5100: LD_EXP 4
5104: PUSH
5105: LD_VAR 0 4
5109: ARRAY
5110: ST_TO_ADDR
// uc_nation = mp_sides_nations [ playersides [ i ] ] ;
5111: LD_ADDR_OWVAR 21
5115: PUSH
5116: LD_OWVAR 16
5120: PUSH
5121: LD_EXP 4
5125: PUSH
5126: LD_VAR 0 4
5130: ARRAY
5131: ARRAY
5132: ST_TO_ADDR
// hc_name =  ;
5133: LD_ADDR_OWVAR 26
5137: PUSH
5138: LD_STRING 
5140: ST_TO_ADDR
// hc_skills = [ waves / 7 mod 11 , waves / 7 mod 11 , waves / 7 mod 11 , waves / 7 mod 11 ] ;
5141: LD_ADDR_OWVAR 31
5145: PUSH
5146: LD_EXP 1
5150: PUSH
5151: LD_INT 7
5153: DIVREAL
5154: PUSH
5155: LD_INT 11
5157: MOD
5158: PUSH
5159: LD_EXP 1
5163: PUSH
5164: LD_INT 7
5166: DIVREAL
5167: PUSH
5168: LD_INT 11
5170: MOD
5171: PUSH
5172: LD_EXP 1
5176: PUSH
5177: LD_INT 7
5179: DIVREAL
5180: PUSH
5181: LD_INT 11
5183: MOD
5184: PUSH
5185: LD_EXP 1
5189: PUSH
5190: LD_INT 7
5192: DIVREAL
5193: PUSH
5194: LD_INT 11
5196: MOD
5197: PUSH
5198: EMPTY
5199: LIST
5200: LIST
5201: LIST
5202: LIST
5203: ST_TO_ADDR
// hc_class = 12 ;
5204: LD_ADDR_OWVAR 28
5208: PUSH
5209: LD_INT 12
5211: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , 13 , true ) ;
5212: CALL_OW 44
5216: PPUSH
5217: LD_VAR 0 3
5221: PPUSH
5222: CALL_OW 250
5226: PPUSH
5227: LD_VAR 0 3
5231: PPUSH
5232: CALL_OW 251
5236: PPUSH
5237: LD_INT 13
5239: PPUSH
5240: LD_INT 1
5242: PPUSH
5243: CALL_OW 50
// end ;
5247: GO 5068
5249: POP
5250: POP
// apequeue := Replace ( apequeue , i , 0 ) ;
5251: LD_ADDR_EXP 10
5255: PUSH
5256: LD_EXP 10
5260: PPUSH
5261: LD_VAR 0 4
5265: PPUSH
5266: LD_INT 0
5268: PPUSH
5269: CALL_OW 1
5273: ST_TO_ADDR
// end else
5274: GO 5622
// if queue [ i ] > 0 then
5276: LD_EXP 5
5280: PUSH
5281: LD_VAR 0 4
5285: ARRAY
5286: PUSH
5287: LD_INT 0
5289: GREATER
5290: IFFALSE 5622
// begin depots = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , playersides [ i ] ] ] ) ;
5292: LD_ADDR_VAR 0 2
5296: PUSH
5297: LD_INT 2
5299: PUSH
5300: LD_INT 30
5302: PUSH
5303: LD_INT 0
5305: PUSH
5306: EMPTY
5307: LIST
5308: LIST
5309: PUSH
5310: LD_INT 30
5312: PUSH
5313: LD_INT 1
5315: PUSH
5316: EMPTY
5317: LIST
5318: LIST
5319: PUSH
5320: EMPTY
5321: LIST
5322: LIST
5323: LIST
5324: PUSH
5325: LD_INT 22
5327: PUSH
5328: LD_EXP 4
5332: PUSH
5333: LD_VAR 0 4
5337: ARRAY
5338: PUSH
5339: EMPTY
5340: LIST
5341: LIST
5342: PUSH
5343: EMPTY
5344: LIST
5345: LIST
5346: PPUSH
5347: CALL_OW 69
5351: ST_TO_ADDR
// if depots then
5352: LD_VAR 0 2
5356: IFFALSE 5611
// begin for l = 1 to queue [ i ] do
5358: LD_ADDR_VAR 0 6
5362: PUSH
5363: DOUBLE
5364: LD_INT 1
5366: DEC
5367: ST_TO_ADDR
5368: LD_EXP 5
5372: PUSH
5373: LD_VAR 0 4
5377: ARRAY
5378: PUSH
5379: FOR_TO
5380: IFFALSE 5584
// begin b := depots [ Rand ( 1 , depots ) ] ;
5382: LD_ADDR_VAR 0 3
5386: PUSH
5387: LD_VAR 0 2
5391: PUSH
5392: LD_INT 1
5394: PPUSH
5395: LD_VAR 0 2
5399: PPUSH
5400: CALL_OW 12
5404: ARRAY
5405: ST_TO_ADDR
// uc_side = playersides [ i ] ;
5406: LD_ADDR_OWVAR 20
5410: PUSH
5411: LD_EXP 4
5415: PUSH
5416: LD_VAR 0 4
5420: ARRAY
5421: ST_TO_ADDR
// uc_nation = mp_sides_nations [ playersides [ i ] ] ;
5422: LD_ADDR_OWVAR 21
5426: PUSH
5427: LD_OWVAR 16
5431: PUSH
5432: LD_EXP 4
5436: PUSH
5437: LD_VAR 0 4
5441: ARRAY
5442: ARRAY
5443: ST_TO_ADDR
// hc_name =  ;
5444: LD_ADDR_OWVAR 26
5448: PUSH
5449: LD_STRING 
5451: ST_TO_ADDR
// hc_skills = [ waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 ] ;
5452: LD_ADDR_OWVAR 31
5456: PUSH
5457: LD_EXP 1
5461: PUSH
5462: LD_INT 5
5464: DIVREAL
5465: PUSH
5466: LD_INT 11
5468: MOD
5469: PUSH
5470: LD_EXP 1
5474: PUSH
5475: LD_INT 5
5477: DIVREAL
5478: PUSH
5479: LD_INT 11
5481: MOD
5482: PUSH
5483: LD_EXP 1
5487: PUSH
5488: LD_INT 5
5490: DIVREAL
5491: PUSH
5492: LD_INT 11
5494: MOD
5495: PUSH
5496: LD_EXP 1
5500: PUSH
5501: LD_INT 5
5503: DIVREAL
5504: PUSH
5505: LD_INT 11
5507: MOD
5508: PUSH
5509: EMPTY
5510: LIST
5511: LIST
5512: LIST
5513: LIST
5514: ST_TO_ADDR
// hc_class = Rand ( 1 , 4 ) ;
5515: LD_ADDR_OWVAR 28
5519: PUSH
5520: LD_INT 1
5522: PPUSH
5523: LD_INT 4
5525: PPUSH
5526: CALL_OW 12
5530: ST_TO_ADDR
// hc_sex = Rand ( 1 , 2 ) ;
5531: LD_ADDR_OWVAR 27
5535: PUSH
5536: LD_INT 1
5538: PPUSH
5539: LD_INT 2
5541: PPUSH
5542: CALL_OW 12
5546: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , 13 , true ) ;
5547: CALL_OW 44
5551: PPUSH
5552: LD_VAR 0 3
5556: PPUSH
5557: CALL_OW 250
5561: PPUSH
5562: LD_VAR 0 3
5566: PPUSH
5567: CALL_OW 251
5571: PPUSH
5572: LD_INT 13
5574: PPUSH
5575: LD_INT 1
5577: PPUSH
5578: CALL_OW 50
// end ;
5582: GO 5379
5584: POP
5585: POP
// queue := Replace ( queue , i , 0 ) ;
5586: LD_ADDR_EXP 5
5590: PUSH
5591: LD_EXP 5
5595: PPUSH
5596: LD_VAR 0 4
5600: PPUSH
5601: LD_INT 0
5603: PPUSH
5604: CALL_OW 1
5608: ST_TO_ADDR
// end else
5609: GO 5622
// begin wait ( 1 1$00 ) ;
5611: LD_INT 2100
5613: PPUSH
5614: CALL_OW 67
// PrepareRespawn ;
5618: CALL 4873 0 0
// end ; end ;
5622: GO 4962
5624: POP
5625: POP
// end ;
5626: LD_VAR 0 1
5630: RET
// every 0 0$03 do var i , l , c ;
5631: GO 5633
5633: DISABLE
5634: LD_INT 0
5636: PPUSH
5637: PPUSH
5638: PPUSH
// begin if mp_game_type = 1 then
5639: LD_OWVAR 6
5643: PUSH
5644: LD_INT 1
5646: EQUAL
5647: IFFALSE 6017
// begin l = 0 ;
5649: LD_ADDR_VAR 0 2
5653: PUSH
5654: LD_INT 0
5656: ST_TO_ADDR
// for i = 1 to TeamA do
5657: LD_ADDR_VAR 0 1
5661: PUSH
5662: DOUBLE
5663: LD_INT 1
5665: DEC
5666: ST_TO_ADDR
5667: LD_EXP 6
5671: PUSH
5672: FOR_TO
5673: IFFALSE 5830
// begin if FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] , [ f_side , TeamA [ i ] ] ] ) = 0 or not MultiplayerSideAlive ( TeamA [ i ] ) then
5675: LD_INT 2
5677: PUSH
5678: LD_INT 30
5680: PUSH
5681: LD_INT 0
5683: PUSH
5684: EMPTY
5685: LIST
5686: LIST
5687: PUSH
5688: LD_INT 30
5690: PUSH
5691: LD_INT 1
5693: PUSH
5694: EMPTY
5695: LIST
5696: LIST
5697: PUSH
5698: LD_INT 22
5700: PUSH
5701: LD_EXP 6
5705: PUSH
5706: LD_VAR 0 1
5710: ARRAY
5711: PUSH
5712: EMPTY
5713: LIST
5714: LIST
5715: PUSH
5716: EMPTY
5717: LIST
5718: LIST
5719: LIST
5720: LIST
5721: PPUSH
5722: CALL_OW 69
5726: PUSH
5727: LD_INT 0
5729: EQUAL
5730: PUSH
5731: LD_EXP 6
5735: PUSH
5736: LD_VAR 0 1
5740: ARRAY
5741: PPUSH
5742: CALL_OW 108
5746: NOT
5747: OR
5748: IFFALSE 5764
// l = l + 1 ;
5750: LD_ADDR_VAR 0 2
5754: PUSH
5755: LD_VAR 0 2
5759: PUSH
5760: LD_INT 1
5762: PLUS
5763: ST_TO_ADDR
// if l = TeamA and mp_sides_teams [ your_side ] = 1 then
5764: LD_VAR 0 2
5768: PUSH
5769: LD_EXP 6
5773: EQUAL
5774: PUSH
5775: LD_OWVAR 15
5779: PUSH
5780: LD_OWVAR 2
5784: ARRAY
5785: PUSH
5786: LD_INT 1
5788: EQUAL
5789: AND
5790: IFFALSE 5796
// begin YouLostInMultiplayer ( ) ;
5792: CALL_OW 107
// end ; if l = TeamA and mp_sides_teams [ your_side ] = 2 then
5796: LD_VAR 0 2
5800: PUSH
5801: LD_EXP 6
5805: EQUAL
5806: PUSH
5807: LD_OWVAR 15
5811: PUSH
5812: LD_OWVAR 2
5816: ARRAY
5817: PUSH
5818: LD_INT 2
5820: EQUAL
5821: AND
5822: IFFALSE 5828
// YouWinInMultiplayer ( ) ;
5824: CALL_OW 106
// end ;
5828: GO 5672
5830: POP
5831: POP
// l = 0 ;
5832: LD_ADDR_VAR 0 2
5836: PUSH
5837: LD_INT 0
5839: ST_TO_ADDR
// for i = 1 to TeamB do
5840: LD_ADDR_VAR 0 1
5844: PUSH
5845: DOUBLE
5846: LD_INT 1
5848: DEC
5849: ST_TO_ADDR
5850: LD_EXP 7
5854: PUSH
5855: FOR_TO
5856: IFFALSE 6013
// begin if FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] , [ f_side , TeamB [ i ] ] ] ) = 0 or not MultiplayerSideAlive ( TeamB [ i ] ) then
5858: LD_INT 2
5860: PUSH
5861: LD_INT 30
5863: PUSH
5864: LD_INT 0
5866: PUSH
5867: EMPTY
5868: LIST
5869: LIST
5870: PUSH
5871: LD_INT 30
5873: PUSH
5874: LD_INT 1
5876: PUSH
5877: EMPTY
5878: LIST
5879: LIST
5880: PUSH
5881: LD_INT 22
5883: PUSH
5884: LD_EXP 7
5888: PUSH
5889: LD_VAR 0 1
5893: ARRAY
5894: PUSH
5895: EMPTY
5896: LIST
5897: LIST
5898: PUSH
5899: EMPTY
5900: LIST
5901: LIST
5902: LIST
5903: LIST
5904: PPUSH
5905: CALL_OW 69
5909: PUSH
5910: LD_INT 0
5912: EQUAL
5913: PUSH
5914: LD_EXP 7
5918: PUSH
5919: LD_VAR 0 1
5923: ARRAY
5924: PPUSH
5925: CALL_OW 108
5929: NOT
5930: OR
5931: IFFALSE 5947
// l = l + 1 ;
5933: LD_ADDR_VAR 0 2
5937: PUSH
5938: LD_VAR 0 2
5942: PUSH
5943: LD_INT 1
5945: PLUS
5946: ST_TO_ADDR
// if l = TeamB and mp_sides_teams [ your_side ] = 2 then
5947: LD_VAR 0 2
5951: PUSH
5952: LD_EXP 7
5956: EQUAL
5957: PUSH
5958: LD_OWVAR 15
5962: PUSH
5963: LD_OWVAR 2
5967: ARRAY
5968: PUSH
5969: LD_INT 2
5971: EQUAL
5972: AND
5973: IFFALSE 5979
// begin YouLostInMultiplayer ( ) ;
5975: CALL_OW 107
// end ; if l = TeamB and mp_sides_teams [ your_side ] = 1 then
5979: LD_VAR 0 2
5983: PUSH
5984: LD_EXP 7
5988: EQUAL
5989: PUSH
5990: LD_OWVAR 15
5994: PUSH
5995: LD_OWVAR 2
5999: ARRAY
6000: PUSH
6001: LD_INT 1
6003: EQUAL
6004: AND
6005: IFFALSE 6011
// YouWinInMultiplayer ( ) ;
6007: CALL_OW 106
// end ;
6011: GO 5855
6013: POP
6014: POP
// end else
6015: GO 6173
// if mp_game_type = 2 then
6017: LD_OWVAR 6
6021: PUSH
6022: LD_INT 2
6024: EQUAL
6025: IFFALSE 6173
// begin l = 0 ;
6027: LD_ADDR_VAR 0 2
6031: PUSH
6032: LD_INT 0
6034: ST_TO_ADDR
// for i = 1 to playersides do
6035: LD_ADDR_VAR 0 1
6039: PUSH
6040: DOUBLE
6041: LD_INT 1
6043: DEC
6044: ST_TO_ADDR
6045: LD_EXP 4
6049: PUSH
6050: FOR_TO
6051: IFFALSE 6144
// if FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] , [ f_side , playersides [ i ] ] ] ) = 0 or not MultiplayerSideAlive ( playersides [ i ] ) then
6053: LD_INT 2
6055: PUSH
6056: LD_INT 30
6058: PUSH
6059: LD_INT 0
6061: PUSH
6062: EMPTY
6063: LIST
6064: LIST
6065: PUSH
6066: LD_INT 30
6068: PUSH
6069: LD_INT 1
6071: PUSH
6072: EMPTY
6073: LIST
6074: LIST
6075: PUSH
6076: LD_INT 22
6078: PUSH
6079: LD_EXP 4
6083: PUSH
6084: LD_VAR 0 1
6088: ARRAY
6089: PUSH
6090: EMPTY
6091: LIST
6092: LIST
6093: PUSH
6094: EMPTY
6095: LIST
6096: LIST
6097: LIST
6098: LIST
6099: PPUSH
6100: CALL_OW 69
6104: PUSH
6105: LD_INT 0
6107: EQUAL
6108: PUSH
6109: LD_EXP 4
6113: PUSH
6114: LD_VAR 0 1
6118: ARRAY
6119: PPUSH
6120: CALL_OW 108
6124: NOT
6125: OR
6126: IFFALSE 6142
// l = l + 1 ;
6128: LD_ADDR_VAR 0 2
6132: PUSH
6133: LD_VAR 0 2
6137: PUSH
6138: LD_INT 1
6140: PLUS
6141: ST_TO_ADDR
6142: GO 6050
6144: POP
6145: POP
// if l = playersides then
6146: LD_VAR 0 2
6150: PUSH
6151: LD_EXP 4
6155: EQUAL
6156: IFFALSE 6173
// begin Multiplayer_Loose_Message ( ) ;
6158: CALL_OW 521
// wait ( 0 0$03 ) ;
6162: LD_INT 105
6164: PPUSH
6165: CALL_OW 67
// YouLostInMultiplayer ( ) ;
6169: CALL_OW 107
// end ; end ; enable ;
6173: ENABLE
// end ;
6174: PPOPN 3
6176: END
// on DestinationUnreachable ( unit ) do begin if getSide ( unit ) = freesides [ 1 ] or getSide ( unit ) = freesides [ 2 ] then
6177: LD_VAR 0 1
6181: PPUSH
6182: CALL_OW 255
6186: PUSH
6187: LD_EXP 3
6191: PUSH
6192: LD_INT 1
6194: ARRAY
6195: EQUAL
6196: PUSH
6197: LD_VAR 0 1
6201: PPUSH
6202: CALL_OW 255
6206: PUSH
6207: LD_EXP 3
6211: PUSH
6212: LD_INT 2
6214: ARRAY
6215: EQUAL
6216: OR
6217: IFFALSE 6228
// DestroyUnit ( unit ) ;
6219: LD_VAR 0 1
6223: PPUSH
6224: CALL_OW 65
// end ;
6228: PPOPN 1
6230: END
